【发布时间】:2016-06-23 09:58:59
【问题描述】:
我遇到了一个数组的子集值问题。
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()、duplicated() 和 match() 尝试了不同的方法,但没有得到结果。我只是无法理解数组的索引-.-
干杯, 祖上
【问题讨论】:
-
您的预期输出是什么?也许
which(raw.table[,,1]==raw.table[,,3]) -
我想要的输出将是
raw.table[,,1]中的两个值的向量,它们对应于raw.table[,,3]中的相同样本编号。所以我不想比较不同维度的值(见你的答案),而是在一维内部进行比较,并使用结果来索引不同维度的值。 -
我明白这一点,但我猜你只有两个元素可以比较,即
target和samples,或者有什么我们不知道的。 -
raw.table[,,1][raw.table[,,3]==x]返回样本编号 x 的两个值。如果样本数的上限值不大(d <- sapply( sort(unique(c(raw.table[,,3]))), function(x) raw.table[,,1][raw.table[,,3]==x])'返回你想要的。
标签: arrays r multidimensional-array indexing