2013-03-21 121 views
7

嗨,我是R新手,所以如果这是一个非常基本的问题,我很抱歉。 我试图将文字添加到x轴上的点11和y轴上的点900上的图形中,该图将以0作为下标来读取t0= -4.0280。凡t0 <- -4.0280 要做到这一点,我已经试过:如何在剧本点标签的文本中包含下标

text(11,900,paste("t[0]=",t0),cex=0.8) 
# which gives 
't[0]= -4.0280' 

text(11,900,expression(paste("t[0]=",t0)),cex=0.8) 
# which gives 
't[0]=t0' 

# the closest I've gotten is:  
text(11,900,expression(paste(t[0]==t0)),cex=0.8) 

将使用下标,但是回到t0,而不是我的-4.0280价值。

任何人都可以告诉我我哪里出错了吗?

干杯。

回答

5

您可以用substitute替换expression。没有必要为paste。该参数list(t0 = t0)告诉substitute与对象t0的值来替换字符串t0

plot(1,1) 

t0 <- 1.3 

text(1, 0.8, substitute(t[0]==t0, list(t0 = t0)), cex = 0.8) 

enter image description here

3

略多于substitute短是bquote

plot(1,1) 
t0 <- -4.0280 
text(1, 0.8, bquote("t"[0] ~ "=" ~ .(t0))) 

的,如果你想喜欢在那里使用paste

text(1, 0.8, (bquote("t"[0]~.(paste0('=',t0))))) 

这种Q的弹起之前:

Using subscript and variable values at the same time in Axis titles in R

Concatenate strings and expressions in a plot's title

+1

谢谢你们,这两个答案的工作很大。要明确,如果这不是正确的用途,我应该何时使用'粘贴'? – JJS 2013-03-21 23:45:58

+0

这里是'paste'的一些用法的例子http://stackoverflow.com/a/15506875/1036500 – Ben 2013-03-22 00:50:46

+0

我已经编辑了我的答案,以显示如何在这里使用'paste',但这不是最有效的办法。我通常使用'paste'来创建字符向量,而不是像你的例子那样包含变量的对象。也就是说,我有时会做一些类似'eval(parse(text = paste0(“examp”,i))'的地方评估粘贴结果,但这被认为是不好的做法 - 'library(fortune); fortune(106)'' – Ben 2013-03-22 01:17:41

相关问题