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

Phi*_*eld 0 r reference object 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
Run Code Online (Sandbox Code Playgroud)

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

dic*_*koa 5

你可以parse然后eval这个表达.

mychars <- c("a", "b", "c")
mystring <- "mychars[2]"
eval(parse(text = mystring))
[1] "b"
Run Code Online (Sandbox Code Playgroud)

它也适用于命名索引

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

  • `财富::财富( "解析()")` (2认同)