r - 在R中合并具有起始模式的文件
问题描述
我有一个包含许多 las 文件的目录。它看起来像下面的图片,但有数百个文件。
我想合并所有以相同名称开头的文件(直到“_”字符)
我设法开发了一个脚本,它合并了具有相同模式的所有文件
masterlist =list.files("//directory/",pattern="^name1")
listfiles <- paste("//directory/",masterlist, sep="")
#concatenate files into one file
con_files = c(listfiles)
lasread <- readLAS(con_files)
lasmerge <- rbind(lasread)
writeLAS(lasmerge, "//write/directory/name1.las")
但是,在这个脚本中,我硬编码了“name1”。我希望这是基于文件名的动态。
所以它应该是某种基于列表的循环,但我不知道如何创建具有动态模式的循环。
希望任何人都可以提供帮助。
谢谢
解决方案
只需创建一个模式列表并为每个模式运行代码。像这样
path <- "."
write_path <- "."
patterns <- list.files(path, pattern = ".*\\.las")
patterns <- strsplit(patterns, "_")
patterns <- unique(sapply(patterns, function(x) x[1]))
for(p in patterns) {
masterlist <- list.files(path, pattern = paste0("^", p))
listfiles <- paste(path, masterlist, sep = "")
#concatenate files into one file
con_files = c(listfiles)
lasread <- readLAS(con_files)
lasmerge <- rbind(lasread)
writeLAS(lasmerge, file.path(write_path, paste0(p, ".las")))
}
推荐阅读
- angular - 为什么我不能使用 AuthGuard 的异步来获得存储的价值?
- python - 正则表达式:在两章之间抓取文本时如何忽略目录?
- http - 如何将 JSON 对象发布到实时网站
- python - 我如何检查几乎所有行是否相同,如果是,则验证最后不同的行是否有一些常数 k
- android - 如果特定文本没有在android中的单行中调整,如何在下一行中移动文本
- javascript - How to create an image in Node js?
- php - phpinfo() 没有更新到终端版本?
- android - Room db:数据库问题
- php - 当括号内的字母时,定制的 ucwords 失败
- r - 在 R 中转换数据对象