如何在R中粘贴命令后调用表达式结果?

时间:2014-02-02 17:56:48

标签: r

我想在动态传递其地址后得到一个单元格值。所以我正在尝试粘贴命令来加入单元格的地址,如下所示:

paste0("DT1$", eval(cols[1]),"[1]")

其中DT1是数据表,cols [1]引用1列,[1]是该列的第一行。在运行时我得到字符串(单元格的地址):

> paste0("DT1$", eval(cols[1]),"[1]")
[1] "DT1$BCC1[1]"

但是如果我跑的话,我想要单元格的值:

> DT1$BCC1[1]
[1] 0

那么如何运行调用粘贴表达式的结果来获取前一个示例中的单元格值“0”。我尝试了eval()和do.call(),但似乎没有任何工作。我为这个基本问题感到抱歉,因为我是R的新手。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:2)

$美元适合控制台使用(部分名称匹配)。您应该使用子集化[运算符。

例如,您可以这样称呼它:

DT1[1,cols[1]]

更通用:

x= 1
y = "BCC1"
DT1[x,y]

请注意,这里的DT1是data.frame而不是data.table。您可以使用data.table

执行相同的操作
DT1[x,y,with=F]

答案 1 :(得分:1)

你可以使用eval(),但你必须首先解析字符串“DT1 $ BCC1 [1]”:

str <-paste0("DT1$", eval(cols[1]),"[1]")
eval(parse(text = str))