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))
我有一个数据框:
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))