У меня 39 json файлов, хранящихся в папке. Все они имеют три общих столбца: MOVEMENT_ID
, DISPLAY_NAME
и geometry
. Я хотел бы получить набор данных, содержащий данные из всех файлов, организованных в эти столбцы. Я использую для L oop, чтобы сделать это.
path = "~/geoboundaries" #path to the folder where the files are stored
file.names=as.list(dir(path, pattern='.json', full.names=T))
#make a list of all file names
out.file=st_sf(MOVEMENT_ID=factor(), DISPLAY_NAME=factor(),
geometry=st_sfc(), crs=st_crs(4326), sf_column_name='geometry')
#define a void sf object in which the loop results will be stored
Я хочу сделать так, чтобы oop (1) читал каждый файл в списке файлов; (2) содержит только столбцы MOVEMENT_ID
, DISPLAY_NAME
и geometry
; (3) добавляет этот файл в предопределенный объект void sf.
for(i in 1:length(file.names))
{
file=st_read(file.names[i]) #(1)
file=select(file, MOVEMENT_ID, DISPLAY_NAME, geometry) #(2)
output=rbind(out.file, file) #(3)
}
С этим кодом output
содержит только последний файл, который был прочитан.
- Это проблема с объектом void
sf
? - Это вопрос определения строк?
output=rbind(out.file, file[i,])
выводит только одну строку последнего файла.