gpt4 book ai didi

regex - R 根据子字符串对字符串进行排序

转载 作者:行者123 更新时间:2023-12-04 17:33:59 24 4
gpt4 key购买 nike

我有一组文件名,如:

filelist <- c("filea-10.txt", "fileb-2.txt", "filec-1.txt", "filed-5.txt", "filef-4.txt")

我想根据“-”后的数字过滤它们。

例如,在 python 中,我可以使用 key排序函数的参数:
filelist <- ["filea-10.txt", "fileb-2.txt", "filec-1.txt", "filed-5.txt", "filef-4.txt"]
sorted(filelist, key=lambda(x): int(x.split("-")[1].split(".")[0]))

> ["filec-1.txt", "fileb-2.txt", "filef-4.txt", "filed-5.txt", "filea-10.txt"]

在 R 中,我正在玩 strsplitlapply到目前为止没有运气。

在 R 中这样做的方法是什么?

编辑 :
文件名可以是很多东西,并且可能包含更多数字。唯一的固定模式是我要排序的数字在“-”之后。另一个(真实的)例子:
c <- ("boards10017-51.mp4",  "boards10065-66.mp4",  "boards10071-81.mp4",
"boards10185-91.mp4", "boards10212-63.mp4", "boards1025-51.mp4",
"boards1026-71.mp4", "boards10309-89.mp4", "boards10310-68.mp4",
"boards10384-50.mp4", "boards10398-77.mp4", "boards10419-119.mp4",
"boards10421-85.mp4", "boards10444-87.mp4", "boards10451-60.mp4",
"boards10461-81.mp4", "boards10463-52.mp4", "boards10538-83.mp4",
"boards10575-62.mp4", "boards10577-249.mp4")"

最佳答案

我不确定您的文件名列表的实际复杂性,但类似以下内容可能就足够了:

filelist[order(as.numeric(gsub("[^0-9]+", "", filelist)))]
# [1] "filec-1.txt" "fileb-2.txt" "filef-4.txt" "filed-5.txt" "filea-10.txt"

考虑到您的编辑,您可能想要更改 gsub类似于:
gsub(".*-|\\..*", "", filelist)

同样,如果没有更多的文本案例,很难说这是否足以满足您的需求。

例子:
 x <- c("boards10017-51.mp4", "boards10065-66.mp4", "boards10071-81.mp4", 
"boards10185-91.mp4", "boards10212-63.mp4", "boards1025-51.mp4",
"boards1026-71.mp4", "boards10309-89.mp4", "boards10310-68.mp4",
"boards10384-50.mp4", "boards10398-77.mp4", "boards10419-119.mp4",
"boards10421-85.mp4", "boards10444-87.mp4", "boards10451-60.mp4",
"boards10461-81.mp4", "boards10463-52.mp4", "boards10538-83.mp4",
"boards10575-62.mp4", "boards10577-249.mp4")

x[order(as.numeric(gsub(".*-|\\..*", "", x)))]
## [1] "boards10384-50.mp4" "boards10017-51.mp4" "boards1025-51.mp4"
## [4] "boards10463-52.mp4" "boards10451-60.mp4" "boards10575-62.mp4"
## [7] "boards10212-63.mp4" "boards10065-66.mp4" "boards10310-68.mp4"
## [10] "boards1026-71.mp4" "boards10398-77.mp4" "boards10071-81.mp4"
## [13] "boards10461-81.mp4" "boards10538-83.mp4" "boards10421-85.mp4"
## [16] "boards10444-87.mp4" "boards10309-89.mp4" "boards10185-91.mp4"
## [19] "boards10419-119.mp4" "boards10577-249.mp4"

关于regex - R 根据子字符串对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com