R:如何将中位数应用于 combn 输出?

R: How to apply median to combn output?

我有一个数据框:

df1
vec1  vec2  vec3  vec4  vec5
0     10    5     12    5
10    20    13    1     7
20    30    28    13    16

然后我对其执行 combn():

x = combn( df1[,1:4] , 3 )

其中returns一个像这样的矩阵:

x
V1           V2
c(0,10,20)   c(0,10,20)
c(10,20,30)  c(5,13,28)
c(5,13,28)   c(12,1,13)

并且我想获得一个向量,其中每个向下的元素是x的每一列的c(n,n+1,n+2)中每个n的中值。像这样:

y
V1                         V2
5 #(median of 0,10,5)      5 #(median of 0,5,12)
13 #(median of 10,20,13)   10 #(median of 0,5,12)
28 #(median of 20,30,28)   20 #(median of 20,28,13)

所以你看到它被转换,使得沿着 y 向量向下的每个项目是列表的原始 combn() 向量中每个 n 元素的中值。

我们可以使用 apply() 对行应用 combn(),然后在 combn() 中使用 median() 函数,转置结果。

t(apply(df1[1:4], 1, combn, 3, median))
#      [,1] [,2] [,3] [,4]
# [1,]    5   10    5   10
# [2,]   13   10   10   13
# [3,]   28   20   20   28

数据:

df1 <- structure(list(vec1 = c(0L, 10L, 20L), vec2 = c(10L, 20L, 30L
), vec3 = c(5L, 13L, 28L), vec4 = c(12L, 1L, 13L), vec5 = c(5L, 
7L, 16L)), .Names = c("vec1", "vec2", "vec3", "vec4", "vec5"), class = "data.frame", row.names = c(NA, 
-3L))