R:嵌套列表中的默认值

时间:2017-04-24 14:30:12

标签: r nested-lists

我目前正在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

为什么会这样?

2 个答案:

答案 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