R语言 对数据框中的整型列重新排序会导致顺序不正确

6jygbczu  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(171)

我正在检索我的文件夹中的文件列表,我想创建一个数据框。文件夹中的文件都包含名称"1.png"、"2.png"等。我想创建一个列名为"Number"和列名为"Extension"的数据框,并根据"Number"列的数值对数据框重新排序。
我首先将文件列表提取到一个数据框中:

MyList <- data.frame(Number = list.files(path), Extension = NA)

结果是这样的:

Number Extension
1   1.png        NA
2  10.png        NA
3  11.png        NA
4  12.png        NA
5  13.png        NA

依此类推......接下来,我根据这些点拆分数字:

MyList$Extension <- lapply(strsplit(MyList$Number, "\\."), "[", 2)
MyList$Number <- lapply(strsplit(MyList$Number, "\\."), "[", 1)

这就给了我:

Number Extension
1     1       png
2    10       png
3    11       png
4    12       png
5    13       png

到目前为止一切都很好...现在我所需要的是根据列"数字"按升序重新排序 Dataframe :

MyList$Number <- order(as.numeric(MyList$Number), decreasing = FALSE)

结果是:

Number Extension
1     1       png
2    22       png
3    33       png
4    34       png
5    35       png

不知什么原因没起作用?我以为会是这样的:

Number Extension
1     1       png
2     2       png
3     3       png
4     4       png
5     5       png

等等......"数字"列属于整数类:

> class(MyList$Number)
[1] "integer"

出了什么问题?

x6yk4ghg

x6yk4ghg1#

如果需要对实际值进行排序,请使用order数据集中的索引,将该索引用作行索引,而不是将该索引指定为列“Number”

MyList <- MyList[order(as.numeric(MyList$Number), decreasing = FALSE),]

相关问题