从 R 的全局环境中导出所有 sf(数据帧)对象

问题描述 投票:0回答:1

我的全球环境中有一堆 sf 数据框,我可以将它们全部导出为 csv,但我想将它们全部导出为 shapefile。

我尝试过手动 st_write 一个对象并且它有效。现在我想批量导出 Glob Env 中的所有对象,并将它们保存为相应的 .shp 文件在我的工作目录中。 有关如何批量导出到 shapefile 的任何帮助吗?

作为参考,我的全局环境有大约 50 个元素,因此不可能手动将它们全部导出。 ;可以创建 sf 数据帧列表吗?

谢谢

我尝试保存为数据帧(list = c(is.data.frame, .globenv)),但我绝对需要导出为 shp,而不是 df list。

r gis shapefile terra
1个回答
0
投票

可能不会因此而赢得优雅的代价,但本质上是迭代环境中的对象,确保所需的类并使用对象名称将它们作为 shp 写入磁盘似乎可以解决问题:

obj <- ls() 

for (i in 1:length(obj)) {
  
  if (all(class(get(obj[i])) == c("sf", "data.frame"))) {
    
    fname <- paste0(obj[i], ".shp")
    
    sf::st_write(get(obj[i]), fname)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.