假设我有一个非常大的 data.frame,每列包含分数。
例如:
MA0001.1 AGL3 MA0003.1 TFAP2A MA0004.1 Arnt MA0005.1 AG MA0006.1 Arnt::Ahr
7.789524e-09 0.4012127249 3.771518e-03 1.892011e-06 0.002733200
5.032498e-07 0.0001873801 9.947449e-05 3.284222e-05 0.001367041
1.194487e-06 0.0009357406 6.943634e-05 1.589373e-05 0.002551519
4.833494e-06 0.0150703600 1.003488e-04 1.197928e-03 0.001431416
6.865040e-05 0.0000732607 3.857193e-04 5.388744e-03 0.001363706
R数据帧:
testfr<-structure(list(`MA0001.1 AGL3` = c(7.78952366977488e-09, 5.03249791215203e-07,
1.19448739380034e-06, 4.83349413748598e-06, 6.86504034402563e-05
), `MA0003.1 TFAP2A` = c(0.401212724871542, 0.000187380067026448,
0.000935740631438077, 0.0150703600158589, 7.32607018758816e-05
), `MA0004.1 Arnt` = c(0.00377151826447817, 9.94744903768433e-05,
6.94363387424972e-05, 0.000100348764966112, 0.00038571926458373
), `MA0005.1 AG` = c(1.89201084302835e-06, 3.2842217133538e-05,
1.58937284554136e-05, 0.00119792816070882, 0.00538874414923338
), `MA0006.1 Arnt::Ahr` = c(0.00273319966783363, 0.00136704060025893,
0.00255151921946167, 0.00143141576426544, 0.00136370552325235
)), .Names = c("MA0001.1 AGL3", "MA0003.1 TFAP2A", "MA0004.1 Arnt",
"MA0005.1 AG", "MA0006.1 Arnt::Ahr"), class = "data.frame", row.names = c(4L,
2L, 5L, 1L, 3L))
现在我想选择其中具有最高值的列并将该列放在第一位。所以 1 列的值应该保持在相同的列名之下,并且整个列应该按等级移动。
我尝试了以下方法:
ranked<-unlist(lapply(testfr,rank))
testranked<-testfr[ranked, ]
这会产生一个具有 2259obs*459vars 的数据帧,而原始数据帧是 5*459。
请注意,testfr 是从一个函数派生的 data.frame,该函数将序列打分到矩阵列表中!并将该分数返回到 data.frame 中,其中行是序列,列是矩阵。
我知道我在索引或取消列出方面做错了,但我不知道如何解决这个问题。任何帮助表示赞赏。