如何使用row.names属性在R中对我的数据帧的行进行排序?

Mat*_*ien 18 r dataframe random-forest

我创建了一个随机森林并预测了我的测试集的类,它们在数据帧中幸福地生活:

row.names   class  
564028      1
275747      1
601137      0
922930      1
481988      1
...

row.names属性告诉我在进行各种操作之前哪一行是哪一行,这些操作在进程中扰乱了行的顺序.到现在为止还挺好.

现在,我想对我的预测的准确性有一个普遍的感觉.为此,我需要使用此数据框并根据row.names属性按升序对其重新排序.通过这种方式,我可以将观察结果与行标识进行比较,我已经知道了.

请原谅我提出这样一个基本问题,但对于我的生活,我找不到关于如何完成这项琐碎任务的良好信息来源.

文档恳求我:

使用attr(x, "row.names"),如果你需要获取一个整数值组行的名字.

但这让我一无所获NULL.

我的问题是,row.names在整个工作流程中,我如何使用忠实地跟随我的数据框架的各种形式?这不是它的用途吗?

ToN*_*NoY 22

这些解决方案都不会真正起作用.它应该是:

df[ order(as.numeric(row.names(df))),] #assuming数据帧被称为df

因为R中的rowname是'character',当缺少as.numeric部分时,它将数据排列为1,10,11 ......等等.


cbu*_*ard 19

这对我有用:

new_df <- df[ order(row.names(df)), ]
Run Code Online (Sandbox Code Playgroud)

  • 寻找相同事物的人们,请查看下面 ToNoY 的答案。当您发现它订购错误时,它将为您节省时间 (2认同)

for*_*ver 7

如果您的数据框中只有一列(就像我的情况一样),您必须添加 drop=F:

df[ order(rownames(df)) , ,drop=F]
Run Code Online (Sandbox Code Playgroud)