【问题标题】:Include filenames in readOGR batch reading在 readOGR 批量读取中包含文件名
【发布时间】:2021-12-05 20:05:46
【问题描述】:

我正在使用位置 ID 数据仅在文件夹名称中可用的 shapefile。我编写了以下代码以批量读取文件,但我也在努力解决如何在列中包含位置 ID 文件夹名称。

folders <- list.dirs(path = "/home/username/foldername/location_id", 
full.names = TRUE, recursive = TRUE)

all_files <- function(folder) {
  out<-readOGR(dsn = paste0(folder), layer = "SAMENAME", verbose = TRUE)
    return(out)
}

my_shapefiles <- purrr::map(folders, safely(all_files))

【问题讨论】:

  • 嗨@Nazer,很高兴能够帮助解决您的问题。只是对您的编辑感到好奇...您是想从folder 获取“folder2”还是“foldername”?
  • @Skaqqs, "folder2" 包含我需要的 id 信息。我将对其进行编辑以使其更清楚。我选择了错误的标签。
  • 好的,谢谢!我相应地在我的答案中编辑了正则表达式。祝你好运

标签: r purrr rgdal


【解决方案1】:

两种方法:

folder <- "/home/username/foldername/folder2"

basename(folder)
#> [1] "folder2"
gsub(".*\\/(.*)$", "\\1", folder)
#> [1] "folder2"

因此,您可以像这样修改您的函数:

all_files <- function(folder) {
  out <- readOGR(dsn = paste0(folder), layer = "SAMENAME", verbose = TRUE)
  out$id <- basename(folder)
    return(out)
}

由 reprex 包于 2021-10-18 创建 (v2.0.1)

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2014-04-12
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多