R按变量

时间:2015-08-05 15:31:12

标签: r

我有一个包含6个元素的列表:

{
 "a": {
  "b": {
    "strA": {
      "strB": {
        "c": {
          "$": 8888
        }
      }
    }
  }
 }
}
如果我手动输入strA和strB的值,

print(unlist($ b $ strA $ strB))可以工作。

但是,我想要做的是在循环中使用strA和strB的各种值来遍历列表

for (i in 1:nrow(h)) {

  x=strsplit(x=h[i, 1], "\\.")   # this bit works for me
  y <- unlist(a)   # this bit works for me and gives me y[1] and y[2]

  if (x==a$b$y[1]$y[2]){   # this bit does not work yet
    <etc.>
  }
}  

问题是我无法让if子句处理变量。 我如何让它工作?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

它没有工作,因为"y[1]"右边的对象没有被评估,它被视为一个字符串(换句话说,R正在寻找一个名为a[["b"]][[y[1]]][[y[2]]]的元素在$ b内。

要按动态变量访问,请使用object not serializable (class: myPackage.MyClass, value: myPackage.MyClass@281c8380)

但是,可以使用比深度嵌套列表更好的数据组织。

答案 1 :(得分:1)

mylist$myelement的替代方案是mylist[['myelement']]。在后者中,您可以传递字符串x <- 'myelement'。换句话说,mylist[[x]]将在mylist$[x]不会的地方工作。