Я хочу создать вложенный список, например,
> 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)
. - person Ferdinand.kraft   schedule 25.08.2013L[[a]][[b]] <- 1
получениеL[[a]][[b]]
выдаст ошибку. - person flodel   schedule 25.08.2013a
или"a"
? Я не получаю ошибок при использовании строк. - person Ferdinand.kraft   schedule 26.08.2013