我正在解析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"]
。那么如何提取子对象?
答案 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"