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)
请分享示例数据