使用 st_read 读取文件时的 Select 列

Select columns when reading in files with st_read

我正在尝试将 39 个 json 文件读取到 R 中的一个公共 sf 数据集中。

这是我一直在尝试的方法:

path <- "~/directory" 
file.names <- as.list(dir(path, pattern='.json', full.names=T)) 
geodata <- do.call(rbind, lapply(file.names, st_read))

问题出在最后一行:rbind 无法工作,因为文件的列数不同。但是,它们都有三个共同的列,我关心的是:MOVEMENT_IDDISPLAY_NAMEgeometry。当 运行 st_read 时,我怎么能 select 只有这三列?

我试过 运行 geodata<-do.call(rbind, lapply(file.names, st_read,select=c('MOVEMENT_ID', 'DISPLAY_NAME', 'geometry'))) 但是,在这种情况下,st_read 似乎无法识别几何列(错误:'no simple features geometry column pressent')。 我也尝试过使用 fread 代替 st_read 但这不起作用,因为 fread 不适用于空间数据。

运行 lapply 在调用 st_read 的函数上,然后执行您需要的操作,例如:

read_my_json = function(f){
 s = st_read(f)
 return(s[,c("MOVEMENT_ID","DISPLAY_NAME")]
}

(我很确定您也不必 select 几何图形,当 selecting 一个 sf 空间对象的列时,您可以免费获得它)

那么 do.call(rbind, lapply(file.names, read_my_json)) 应该可以。

不需要包含额外的包,它的一大优势在于您可以测试此功能以了解它在单个项目上的工作情况,然后再投入一千个项目。