我目前正在R中构建一个递归循环,我必须跟踪我在嵌套列表中的深度。但是,在嵌套列表中计数时,我遇到了问题。
以下是问题说明:
我有一个清单
myList <- list()
我测试列表中随机索引的值
myList[["test1"]]
NULL
我可以将此值加总并得到零
sum(myList[["test1"]])
0
现在我为这个索引分配一个值
myList[["test1"]] <- sum(myList[["test1"]]) + 1
接下来我想在列表中更深入地进行相同的操作
myList[["test1"]][["test2"]]
Error in myList[["test1"]][["test2"]] : subscript out of bounds
为什么会这样?
答案 0 :(得分:1)
使用...
设置myList[["test1"]]
的值时
myList[["test1"]] <- sum(myList[["test1"]]) + 1
myList[["test1"]]
成为1个元素的数字向量,而不是列表
如果你想让test1
成为一个列表,其中一个元素是另一个(子)列表,名为test2
,你可以这样做......
myList <- list()
myList[["test1"]] <- list(sum(myList[["test1"]]) + 1)
myList[["test1"]]["test2"] <- list(sum(myList[["test1"]][[1]]) + 1)
myList
myList$test1
myList$test1$test2
答案 1 :(得分:0)
我不确定你要做什么,但这是你所做的更简单的版本:
> x<-1
> x[["test2"]]
Error in x[["test2"]] : subscript out of bounds
此处x
是数字向量。它仍然可以使用[[
进行订阅,但test2
中没有名为x
的元素,因此您可以获得&#34;越界&#34;尝试访问该元素时出错。
即使是包含多个元素的向量也会出现此错误:
> c(1,2)[["test2"]]
Error in c(1, 2)[["test2"]] : subscript out of bounds
但是,如果我们将其中一个命名为test2
,那么下标会返回一些内容:
> c(1,2,test2=3)[["test2"]]
[1] 3