我有几个数据文件,需要按特定顺序处理。文件名称的格式是,例如, "Ad_10170_75_79.txt"
。按R中的特定顺序处理文件
目前他们正在根据第一号(长度不同)进行分类,见下图:
f <- as.matrix (list.files())
f
[1] "Ad_10170_75_79.txt" "Ad_10345_76_79.txt" "Ad_1049_25_79.txt" "Ad_10531_77_79.txt"
但我需要他们通过中间的数字进行排序,这样的:
> f
[1] "Ad_1049_25_79.txt" "Ad_10170_75_79.txt" "Ad_10345_76_79.txt" "Ad_10531_77_79.txt"
因为我只需要文件名的中间数字,我认为最简单的方法是,摆脱名称的其余部分并重命名所有文件。为此,我尝试使用strsplit
(plyr
)。
f2 <- strsplit (f,"_79.txt")
但我确定有一种方法可以直接对文件进行排序,而无需重命名所有文件。我尝试使用sort
并用regex
来描述名称,但没有成功。这已经是一个多年的问题,我花了几个小时寻找和尝试,以解决这个大概简单的任务。很感谢任何形式的帮助。
老例如数据集:
f <- c("Ad_10170_75_79.txt", "Ad_10345_76_79.txt",
"Ad_1049_25_79.txt", "Ad_10531_77_79.txt")
感谢你对你的答案。我认为我必须修改我的示例,因为该解决方案应该适用于所有可能的中间数字,与数字无关。
新的例子数据集:
f <- c("Ad_10170_75_79.txt", "Ad_10345_76_79.txt",
"Ad_1049_9_79.txt", "Ad_10531_77_79.txt")
@ May6更新。你可以通过用'as.numeric'包装'gsub'调用来解决这个问题。 –
谢谢你的工作!你知道一个用于假人的正则表达式教程吗?我找不到对我来说足够详细的。 – May6
如果R是您选择的语言,我推荐'?regex'。 –