R: добавить текст в выражение - PullRequest
0 голосов
/ 03 мая 2018

Из пакета sfsmisc У меня есть выражение, и я хочу добавить текст перед этим. Как добавить текст в выражение?

library(sfsmisc)
v <- pretty10exp(500)
title <- paste("some text ", v)
plot(1:5, 1:5, main = title)

Этот заголовок отображается как some text 5 %*% 10^2, но не отформатированный текст.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я не уверен, возможно ли сделать это автоматически, но если вы не полагаетесь на это, вы можете сделать

plot(1:10, 1:10, main = expression("some text" ~ 5 %*% 10^2))

доходностей:

enter image description here

0 голосов
/ 03 мая 2018

Я думаю, что если вы используете parse, это удовлетворит интерпретатора R. parse возвращает неоцененное значение, классифицированное как выражение. Вам просто нужно убедиться, что есть тильды (~), где вы хотите интервал:

v <- pretty10exp(500)
title <- parse(text= paste("some ~text ~", v ) ) 
plot(1:5, 1:5, main = title)

title
#expression(some ~text ~ 5 %*% 10^2)

Выражения в R должны удовлетворять правилам синтаксического анализа языка R, т. Е. Символы или токены не должны ссылаться на что-либо конкретное в приложениях, поскольку они будут отображаться «как есть». Поэтому я решил использовать parse в качестве конструктора выражения, а не пытаться добавлять текст в существующее выражение. Между каждым токеном должен быть разделитель. Можно также использовать скобки типа «(» в виде функций или квадратные скобки «[», но их необходимо правильно соединить.

> expression( this won't work)   # because of the lack of separators
Error: unexpected symbol in "expression( this won"
> expression( this ~ won't *work)
+                           # because it fails to close after the single quote
> expression( this ~ won\'t *work)
Error: unexpected input in "expression( this ~ won\"
> expression( this ~ won\\'t *work)
Error: unexpected input in "expression( this ~ won\"
> expression( this ~ will *work)
expression(this ~ will * work)      # my first successful expression
> expression( this ~ will *(work)
+ but only if properly closed)     # parsing continued to 2nd line after parens.
Error: unexpected symbol in:
"expression( this ~ will *(work)
but"
> expression( this ~ will *(work)    # no error so far anyway
+ *but~only~if~properly~closed)
Error: unexpected '~' in:
"expression( this ~ will *(work)
*but~only~if~"
> expression( this ~ will *(work)
+ *but~only~'if'~properly~closed)
# At last ... acceptance
expression(this ~ will * (work) * but ~ only ~ "if" ~ properly ~ 
    closed)

Последнее происходит потому, что в R есть несколько (очень мало) зарезервированных слов, и if является одним из них. Смотри ?Reserved

...