基于不同维度的值提取数组值

时间:2016-06-23 09:59:00

标签: arrays r multidimensional-array indexing

我对数组值的子集有问题。

raw.table <- array(data = c(1:12,13:24,rep(1:6, each=2)), 
                   dim=c(3,4,3),
                   dimnames=list(LETTERS[1:3],1:4,c("target","ctrl","samples")))

我的数组的前两个维度代表我想要进行统计的一些值,而更高的维度包含我想用来访问特定子集的不同属性。在这种情况下,我只有样本编号,而总是有两个值分配给相同的样本编号(测量重复)。

, , target

  1 2 3  4
A 1 4 7 10
B 2 5 8 11
C 3 6 9 12

, , ctrl

   1  2  3  4
A 13 16 19 22
B 14 17 20 23
C 15 18 21 24

, , samples

  1 2 3 4
A 1 2 4 5
B 1 3 4 6
C 2 3 5 6

如何访问维度1(=目标)中具有相同样本编号的维度3(=样本)中的值?我尝试了使用unique(),duplicatelicated()和match()的不同方法,但没有得出结果。我无法解决数组的索引问题 - .-

干杯, zuup

1 个答案:

答案 0 :(得分:0)

使用逻辑测试(跨维度)形成逻辑索引:

> raw.table[,,1] == raw.table[,,3]
      1     2     3     4
A  TRUE FALSE FALSE FALSE
B FALSE FALSE FALSE FALSE
C FALSE FALSE FALSE FALSE

并使用它从第一维中选择项目(因为它们的长度相等,没有回收):

> raw.table[, , 1 ][ raw.table[,,1] == raw.table[,,3] ]
[1] 1

在R

中完全可以接受对Extract-operator的链接调用