如何使apply()不下降尺寸?

时间:2016-02-28 15:03:54

标签: arrays r

我有一个4维数组,我想在不改变轴的情况下应用函数:

l = letters
a = array(1:2*3*4*5, dim=c(2,3,4,5),dimnames=list(l[1:2],l[3:5],l[6:9],l[10:14]))
id = function(x) x
fx = function(x) sum(x)

如果我应用不改变结构的函数,我可以使用aperm恢复原始尺寸:

re = dim(apply(a, c(1,2,4), id)) # 4 2 3 5
aperm(re, match(seq_along(dim(a)), c(3,1,2,4))) # original dims

有没有办法在保留尺寸的特定尺寸上应用函数?

re = dim(apply(a, c(1,2,4), fx)) # 2 3 5, dropping 3rd dimension

其他函数有一个参数drop,用于指示是否应删除带length=1的维度,但事实并非如此。

0 个答案:

没有答案