0
对于下面数据帧输入其相应的列名称:检索最大下降顺序值与每每一行
data <- data.frame(A = c(19,2,3,22), B = c(1,20,12,15) , C = c(10,11,19,0), D = c(0,13,8,2), E = c(75,21,4,80))
A B C D E
1 19 1 10 0 75
2 2 20 11 13 21
3 3 12 19 8 4
4 22 15 0 2 80
我当前的代码检索每行的行如下的前三个最大输出:
t(apply(data, 1, function(x) head(sort(x, decreasing = TRUE, na.last = NA), 3)))
[,1] [,2] [,3]
[1,] 75 19 10
[2,] 21 20 13
[3,] 19 12 8
[4,] 80 22 15
那么因为我需要下面的输出检索名称标签与每个最大值保存在旁边的记者“max_value”N:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 75 E 19 A 10 C
[2,] 21 E 20 B 13 D
[3,] 19 C 12 B 8 D
[4,] 80 E 22 A 15 B
十分感谢很多 – jean
时也有类似的声明/功能重复,我们可以mapply使用(函数(i)apply(data,1,function(x)i(head(sort(x,TRUE),3))),c(function(m) m),' '矩阵(t(a),ncol = 6,byrow = T)'会给我们与上面相同的结果 – Onyambu
@Onyambu谢谢你提到它。我知道。我只是这样做,遵循OP结构/语法。我们也可以避免“应用(df,1,...)”(这对数据帧来说是非常糟糕的),这将是理想的解决方案。只要我有一些时间,我会尽快更新矢量化的替代方案 – Sotos