Хорошо, поэтому вопрос скорее в стратегии для работы с большими файлами, а не в том, «как прочитать шейп-файл в R».
Этот пост показывает, как можно использовать подход «разделяй-применяй-рекомбинируй» в качестве решения путем подстановки шейп-файлов.
Исходя из текущего ответа, предположим, что у вас есть SpatialPolygonsDataFrame с именем shpdata. shpdata будет иметь атрибут данных (доступ через @data) с каким-то идентификатором для каждого полигона (для шейп-файлов Tiger это обычно что-то вроде 'GEOID'). Затем вы можете циклически перебирать эти идентификаторы в группах и размещать / обрабатывать / экспортировать shpdata для каждой небольшой группы полигонов. Я предлагаю либо записать промежуточные файлы в формате .csv, либо вставить их в базу данных, например, sqlite.
Пример кода
library(rgdal)
shpdata <- readOGR("/path/to/shpfolder/", "shpfilename")
# assuming the geo id var is 'geo_id'
lapply(unique(shpdata@data$geo_id), function(id_var){
shp_sub = subset(shpdata, geo_id == id_var)
### do something to the shapefile subset here ###
### output results here ###
### clean up memory !!! ###
rm(shp_sub)
gc()
})