为什么 R 将文件排序为 1 10 100 而不是 1 2 3? [复制]

2024-02-21

可能的重复:
R 自行对向量进行排序 - 坏孩子! https://stackoverflow.com/questions/4286299/r-sorts-a-vector-on-its-own-accord-bad-boy
如何使用 R 按排序顺序读取目录中的文件? https://stackoverflow.com/questions/10777367/how-can-i-read-the-files-in-a-directory-in-sorted-order-using-r

下面给出的代码运行良好。然而,问题是,当我输入 dir1 查看结果时,我发现 R 将文件排序为:

[1] "data1.flt"   "data10.flt"  "data100.flt" "data101.flt"
[5] "data102.flt" "data103.flt" "data104.flt" "data105.flt"
[9] "data106.flt" "data107.flt" "data108.flt" "data109.flt"
[13] "data11.flt"  "data110.flt" "data111.flt" "data112.flt"
[17] "data113.flt" "data114.flt" "data115.flt" "data116.flt"
.
.
to
.
.
[357] "data91.flt"  "data92.flt"  "data93.flt"  "data94.flt"
[361] "data95.flt"  "data96.flt"  "data97.flt"  "data98.flt"
[365] "data99.flt"

这会导致错误的结果。 如何告诉 R 按顺序开始从 1 到 365 读取(我什至使用了 sort(dir1) 但没有对它们进行排序)。 就像是 :

[1] "data1.flt"   "data2.flt"  "data3.flt" "data4.flt"

不喜欢:

[1] "data1.flt"   "data10.flt"  "data100.flt" "data101.flt"

这是代码:

dir1 <- list.files("C:\\Users", "*.flt", full.names = TRUE)
results <- list()
for (.files in seq_along(dir1)){
    file2 <- readBin(dir2[.files], double(), size = 4, n = w * 67420, signed = TRUE)
    results[[length(results) + 1L]] <- file1[file1 != -9999]*10
}
for (i in seq_along(results)){
    fileName <- sprintf("C:\\New folder (2)\\NewFile%03d.bin", i)
    writeBin(as.integer(results[[i]]), fileName, size = 2)
} 

因为它不解释数字 - 它而是对字符串进行排序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 R 将文件排序为 1 10 100 而不是 1 2 3? [复制] 的相关文章

随机推荐