R:嵌套列表中的默认值
R: Default values in 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
为什么会这样?
我不确定你想做什么,但这是你所做的一个更简单的版本:
> x<-1
> x[["test2"]]
Error in x[["test2"]] : subscript out of bounds
这里x
是一个数值向量。它仍然可以使用 [[
进行下标,但是 x
中没有名为 test2
的元素,因此当您尝试访问该元素时会出现 "out of bounds" 错误。
即使是包含多个元素的向量也会出现此错误:
> c(1,2)[["test2"]]
Error in c(1, 2)[["test2"]] : subscript out of bounds
但是,如果我们将其中之一命名为 test2
那么下标 returns 就是:
> c(1,2,test2=3)[["test2"]]
[1] 3
当您将 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
我目前正在 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
为什么会这样?
我不确定你想做什么,但这是你所做的一个更简单的版本:
> x<-1
> x[["test2"]]
Error in x[["test2"]] : subscript out of bounds
这里x
是一个数值向量。它仍然可以使用 [[
进行下标,但是 x
中没有名为 test2
的元素,因此当您尝试访问该元素时会出现 "out of bounds" 错误。
即使是包含多个元素的向量也会出现此错误:
> c(1,2)[["test2"]]
Error in c(1, 2)[["test2"]] : subscript out of bounds
但是,如果我们将其中之一命名为 test2
那么下标 returns 就是:
> c(1,2,test2=3)[["test2"]]
[1] 3
当您将 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