2016-10-04 38 views
1

我确定这个问题必须是微不足道的,但我无法找到堆栈溢出的类似问题。我想合并array.Aarray.B使得result是阵列A的值的阵列和B.R:合并两个相等大小的阵列

例如数组:

array.A <- array(1:9, dim=c(3,3)) 
array.B <- array(LETTERS[seq(from = 1, to = 9)], dim=c(3,3)) 

> array.A 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 
[3,] 3 6 9 

> array.B 
    [,1] [,2] [,3] 
[1,] "A" "D" "G" 
[2,] "B" "E" "H" 
[3,] "C" "F" "I" 

我希望将它们合并,使得所得到的数组应该是这样的:

> result 
    [,1]  [,2]  [,3] 
[1,] ["A",1] ["D",4] ["G",7] 
[2,] ["B",2] ["E",5] ["H",8] 
[3,] ["C",3] ["F",6] ["I",9] 

我使用cbindrbind尝试,但是这不是我要找的(我并不想以连接阵列)。我似乎无法找到一个简单的解决方案。

在此先感谢。

+1

不知道你想要什么作为输出准确 - 是'出< - 阵列(地图(C ,array.A,array.B),dim = dim(array.A))'足够接近,它允许你有'out [1,1]'包含两个值? – thelatemail

+0

感谢您的评论。虽然我需要能够在这两个值之间进行选择,但这几乎是我所追求的。像''A''出'[1,1] [1]'和'1'出'''出'[1,1] [2]'。我不知道这是否可行? –

+1

当然,out [1,1] [[1]] [1]应该这样做。你只需要首先访问列表的内容 – thelatemail

回答

2

这不是一种典型的结构,但你可以把list对象matrixarray内:

out <- array(Map(list, array.A, array.B), dim=dim(array.A)) 
#  [,1] [,2] [,3] 
#[1,] List,2 List,2 List,2 
#[2,] List,2 List,2 List,2 
#[3,] List,2 List,2 List,2 

out[1,1] 
#[[1]] 
#[[1]][[1]] 
#[1] 1 
# 
#[[1]][[2]] 
#[1] "A" 

out[1,1][[1]][1] 
#[[1]] 
#[1] 1 

out[1,1][[1]][2] 
#[[1]] 
#[1] "A" 
+0

非常感谢!虽然这完全回答了我的问题,但我应该提及,对于我的真实数据,我最终放弃了这种方法(合并数组),因为这是一种实现我的目标的笨重方式(我仍然是R新手)。 –