我有一个包含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子句处理变量。 我如何让它工作?非常感谢任何帮助。
答案 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]
不会的地方工作。