所以我有一个像这样的2D数组:
A1BG A1CF A2M A2ML1 A3GALT2
1 6.487285e-07 1.498563e-04 2.406783e-04 6.487285e-07 6.487285e-07
2 4.639610e-07 3.639610e-07 3.639610e-07 3.639610e-07 5.639610e-07
3 3.542874e-07 3.542874e-06 3.542874e-07 2.161153e-05 3.542874e-07
4 9.150830e-07 9.150830e-07 9.150830e-07 9.150830e-07 9.150830e-07
5 2.854448e-04 2.523827e-07 1.539534e-05 2.523827e-07 2.523827e-07
尝试获取每行中最大3个元素的索引(列名)。理想的输出就像:
1 A2M A1CF
2 A3GALT2 A1BG
3 A2ML1 A1CF
答案 0 :(得分:0)
您可以使用apply
并将margin
设置为行,按最大值排序,然后选择前三个值。
set.seed(1)
df <- data.frame(a = rnorm(100, 100),
b = rnorm(100, 25),
d = rnorm(100, 90),
d = rnorm(100, 95))
output <- apply(df, 1, function(x) order(-x)[1:3])
output
> output
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 1 1 1 1 1 1 1 1
[2,] 4 4 4 4 4 4 4 4 4
[3,] 3 3 3 3 3 3 3 3 3
将以matrix
格式返回输出。