R语言 如何引用()非标准表达式,如2A-2B?

xriantvc  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(137)

或任何其他不可解析的表达式,如igraph::graph_from_literal(1A +--+ 1B)
函数调用quote(1A-2B)得到Error: unexpected symbol in quote(1A"
如何获得类似于

  • 引用(A-B),
  • 引用(1-1)?
hwazgwia

hwazgwia1#

在许多编程语言中,R中的 * 符号 *(即变量名)不能以数字开头。由于1A不是有效的R符号,因此表达式1A - 2B在语法上无效。由于quote将分析但不执行表达式,因此不能在quote中使用包含无效符号(如1A2B)的表达式。
很难知道您在这里要达到什么目的,但您似乎希望在绘图中使用带引号的表达式。如果是这种情况,您可以使用quote(1*A - 2*B),因为这个 * 是 * 一个有效的表达式,并且*符号将在绘图时删除。

my_quote <- quote(1*A - 2*B)

plot.new()
text(x = 0.5, y = 0.5, label = my_quote, cex = 6)

创建于2022年12月17日,使用reprex v2.0.2

iklwldmw

iklwldmw2#

2A +-+ 2B引为quote("2A" +-+ "2B")。当quote(expr)中的表达式包含不可解析的对象名时,将其引为引号。
举例来说。

A2   <- 1       ## creates object "A2" with value `[1] 1`.
2A   <- 1       ## fails because "2A" is a not syntactically valid R expression.
"2A" <- 1       ## creates object "2A" with value `[1] 1`.
assign("2B", 1) ## creates object "2B" with value `[1] 1`.
if (require(igraph)) g <- graph_from_literal("1A" - "2A")
A2; get("2A"); get("2B")
ls()
## [1] "2A" "2B" "A2"

相关问题