重新排序数据帧中的整数列会导致顺序错误



我正在检索文件夹中的文件列表,我想创建一个数据框架。文件夹中的文件名称均为"1.png"、"2.png"等。我想创建一个数据框架,列名为number;和名为"extension"的列;并根据所述"数字"的数值对所述数据帧重新排序;列。

我首先将文件列表提取到一个数据帧中:

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

到目前为止还好…现在我所需要做的就是根据列"Number":

按升序重新排序数据帧
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"

出什么事了?

如果我们需要实际值排序,使用order数据集的索引,使用索引作为行索引,而不是将索引分配为列'Number'

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

最新更新