将带索引的字符串转换为对象引用

时间:2013-07-15 20:28:05

标签: r object reference formula

我正在解析R公式的左侧。在我的特定情况下,这可以是带有索引的变量或对象(类似myvariable[[3]])。我想访问该对象的第三个子对象并将其存储在另一个对象中。以下示例从我拥有索引对象的字符串开始,但我需要引用。

mychars <- c("a", "b", "c")
mystring <- "mychars[2]"
get(mystring)                # does not work
eval(as.name(mystring))      # does not work either

我当然可以使用正则表达式解析数字,并使用as.numeric将其转换为真实索引。但在某些情况下,可能会有名称索引,如mystring["second"]。那么如何提取子对象?

1 个答案:

答案 0 :(得分:5)

您可以parse然后eval此表达式。

mychars <- c("a", "b", "c")
mystring <- "mychars[2]"
eval(parse(text = mystring))
[1] "b"

它也适用于命名索引

names(mychars) <- c("first", "second", "third")
eval(parse(text = 'mychars["second"]'))
second 
   "b"