我有一个包含655行和21列的数据集。我目前正在遍历每一列,需要找到每一列的前十位,但是当我使用head()函数时,它不会保留标签(它们是细菌的名称,每列都是样品)。有没有办法创建排序的数据子集,将行名称与它一起排序?
现在我正在做
topten <- head(sort(genuscounts[,c(1,i)], decreasing = TRUE) n = 10)
但是我收到一条错误消息,因为第1列是名称列表。
谢谢!
答案 0 :(得分:0)
由于sort()
适用于向量,因此它不适用于您的子集genuscounts[,c(1,i)]
,因为该子集有多列。在基数R中,您将要使用order()
:
thisColumn <- genuscounts[,c(1,i)]
topten <- head(thisColumn[order(thisColumn[,2],decreasing=T),],10)
您还可以使用arrange_()
包中的dplyr
,它提供了一个用户友好的界面:
library(dplyr)
head(arrange_(genuscounts[,c(1,i)],desc(names(genuscounts)[i])),10)
您需要使用arrange_()
代替arrange()
,因为您的列名将是字符串而不是对象。
希望这会有所帮助!!