R:向表达式添加文本
R: add text to an expression
来自 sfsmisc
包我有一个表达式,我想在它之前添加一个文本。如何在表达式上添加文本?
library(sfsmisc)
v <- pretty10exp(500)
title <- paste("some text ", v)
plot(1:5, 1:5, main = title)
这会将标题绘制为 some text 5 %*% 10^2
而不是格式化文本。
我想如果你使用 parse
它会满足 R 解释器。 parse
returns 未评估的 'expression' 分类值。你只需要确保你想要间距的地方有波浪号(~
):
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 语言的解析规则,e 但符号或标记不需要在应用程序中引用任何特定内容,因为它们只会显示 "as is"。所以我决定使用 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
我不确定是否可以自动执行此操作,但如果你不依赖它,你可以这样做
plot(1:10, 1:10, main = expression("some text" ~ 5 %*% 10^2))
产量:
来自 sfsmisc
包我有一个表达式,我想在它之前添加一个文本。如何在表达式上添加文本?
library(sfsmisc)
v <- pretty10exp(500)
title <- paste("some text ", v)
plot(1:5, 1:5, main = title)
这会将标题绘制为 some text 5 %*% 10^2
而不是格式化文本。
我想如果你使用 parse
它会满足 R 解释器。 parse
returns 未评估的 'expression' 分类值。你只需要确保你想要间距的地方有波浪号(~
):
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 语言的解析规则,e 但符号或标记不需要在应用程序中引用任何特定内容,因为它们只会显示 "as is"。所以我决定使用 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
我不确定是否可以自动执行此操作,但如果你不依赖它,你可以这样做
plot(1:10, 1:10, main = expression("some text" ~ 5 %*% 10^2))
产量: