我有一个数据框:
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 )
返回如下矩阵:
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元素的中位数。
答案 0 :(得分:2)
我们可以使用apply()
在行上应用combn()
,然后使用median()
中的combn()
函数,转置结果。
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))