R按列值排序并获取列编号

R按列值排序并获取列编号,r,sorting,R,Sorting,我有一个二维数组,如下所示: 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.5428

我有一个二维数组,如下所示:

       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 

您可以使用
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
set.seed(1)

请分享示例数据