如何索引R表达式中的希腊符号

如何索引R表达式中的希腊符号,r,R,下面是一个简单的例子: ylab<-expression(paste(beta, "/ml")) plot(1:10, ylab=ylab) ylabfirst-offbeta应该用双引号引起来,所以它是一个字符串,而不是@42所指出的基函数- 否则,您可以将字符串粘贴在一起,然后像这样对其求值 unit<-"beta" #note double quotes txt <- paste0("expression(",unit,"~'/ml')") #built express

下面是一个简单的例子:

ylab<-expression(paste(beta, "/ml"))
plot(1:10, ylab=ylab)

ylabfirst-off
beta
应该用双引号引起来,所以它是一个字符串,而不是@42所指出的基函数-

否则,您可以将字符串粘贴在一起,然后像这样对其求值

unit<-"beta" #note double quotes
txt <- paste0("expression(",unit,"~'/ml')") #built expression as string
ylab<-eval(parse(text=txt)) #evaluate the expression with parse
plot(1:10, ylab=ylab)

unitUpdate:似乎希望将一个变量从表达式外部传递到在
plot
调用外部构造的表达式类变量中。这似乎比使用
eval(parse(text=paste(…)
构造要简单得多:

unit=quote(beta)
ylab<-bquote(.(unit)/ml)
plot(1:10, ylab=ylab)
我最初怀疑的问题的答案是被问到的,因为这是我在R的早期努力解决的一个(实际上是两个)问题。我猜你想构造记号标签而不是轴标签,你想让它们显示为希腊字母或其他
plotmath
-y结构,但使用升序“索引”替换值。第二个请求要求使用
substitute
bquote
,而第一个请求要求记住使用
par
参数抑制y轴刻度和标签,然后使用

plot(1:10, ylab=ylab,yaxt="n")
# Now create "horizontally aligned" (using las=2)  beta-value tick labels
axis(2, at=1:10, 
        labels=as.expression(lapply( 1:10, function(x) bquote( beta == .(x)))) ,
        las=2)

<> > <代码>表达式>代码> > bQue>代码> -ED结果是我在更早的答案中找到的(我),我认为只是标记为一个副本,但是它没有涉及任何绘图,所以我决定认为它是“部分重叠”。.

如果后三个命令没有出现错误,则表示您的工作区中有一个名为
beta
的数据对象。您是否真的试图在记号处创建文本标签?否则,我不会看到任何我称之为“索引”的内容.@42-不一定是因为beta是base中的一个base函数;因此不可能出现错误,对吧。但OP似乎仍然不太可能真正想要创建一个名为
unit
的函数,该函数需要两个参数。我对目标的澄清要求仍然存在。有关
粘贴
表达式的相关问题,请参阅
@42,你能重现你这边的问题吗?如果不能,问题可能在我本地。我喜欢使用
quote
bquote
来解决这个问题。当
unit
是一个符号向量(例如,beta、mu、phi)
unit时,你如何修改
 unit=as.name('beta')
plot(1:10, ylab=ylab,yaxt="n")
# Now create "horizontally aligned" (using las=2)  beta-value tick labels
axis(2, at=1:10, 
        labels=as.expression(lapply( 1:10, function(x) bquote( beta == .(x)))) ,
        las=2)