2014-09-22 86 views
2

考虑以下数组分配:R:多维数组索引分配

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

尝试'名单(名单(NULL, “C”),列表(NULL,C( “A”, “B”)))' – 2014-09-22 01:43:27

+0

在我的实际代码中,我使用循环和其他带有可变输出的函数创建了这个数组的内容。我不能在我的功能中手动解决问题;我需要一些方法将结果直接插入到数组中的适当位置。 – Logister 2014-09-22 01:48:44

回答

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