R:多维数组索引赋值

时间:2014-09-22 01:40:24

标签: r list multidimensional-array indexing

考虑以下数组分配:

temp=array(list(),2)
temp[[2]][[2]]=c("a","b")
temp[[1]][[2]]="c"

这会产生以下结果:

temp
[[1]]
[1] NA  "c"

[[2]]
[[2]][[1]]
NULL

[[2]][[2]]
[1] "a" "b"

相反,我希望结果为:

temp
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
[1] "c"

[[2]]
[[2]][[1]]
NULL

[[2]][[2]]
[1] "a" "b"

如何进行作业以使前者产生而不是后者?

1 个答案:

答案 0 :(得分:3)

您可以使用replicate而不是array初始化列表。列表和数组的行为不同

x <- replicate(2, list())
x[[1]][[2]] <- "c"
x[[2]][[2]] <- c("a", "b")
x

注意:

is.array(x)
# [1] FALSE
sapply(x, is.array)
# [1] FALSE FALSE