0

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

4

1 回答 1

6

你可以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"
于 2013-07-15T20:30:26.400 回答