我想创建一个嵌套列表,例如:
> 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,这就是为什么我的代码看起来工作正常,但有时会出现奇怪的失败情况。我想知道是否有任何方法可以修复这种意外行为,谢谢。
L <- list(); L$a$b <- 1; is(L$a)
和M <- list(); M[["a"]][["b"]] <- 1; is(M$a)
。 - Ferdinand.kraftL[[a]][[b]] <- 1
后,获取L[[a]][[b]]
将会出现错误。 - flodela
还是"a"
?我使用字符串没有出现错误。 - Ferdinand.kraft