我想创建一个嵌套列表,例如,
> L <- NULL
> L$a$b <- 1
> L
$a
$a$b
[1] 1
由于我需要在循环中进行赋值,因此我必须使用括号而不是美元,例如,
> L <- NULL
> a <- "a"
> b <- "b"
> L[[a]][[b]] <- 1
> L
a
1
> b <- "b1"
> L[[a]][[b]] <- 1
Error in L[[a]][[b]] <- 1 :
more elements supplied than there are to replace
这出乎我的意料:L 变成了一个命名向量,而不是一个嵌套列表。但是如果赋值是一个长度超过1的向量,问题就会消失,
> L <- NULL
> L[[a]][[b]] <- 1:2
> L
$a
$a$b
[1] 1 2
> b <- "b1"
> L[[a]][[b]] <- 1
> L
$a
$a$b
[1] 1 2
$a$b1
[1] 1
我的大多数作业都比 1 长,这就是我的代码看似有效但有时会奇怪地失败的原因。我想知道是否有任何方法可以解决这种意外行为,谢谢。