В базе R, не могли бы вы использовать функцию assign
в цикле for, чтобы сделать это?
trailname <- c("trail1", "trail2", "trail3")
trailtype <- c("mountain", "flat", "hilly")
parking <- c("no", "yes", "no")
shapelength <- c("835", "5728", "367")
trails <- data.frame(trailname, trailtype, parking, shapelength)
for(i in 1:nrow(trails)){
name <- as.character(trails$trailname[[i]])
assign( name, subset(trails, trailname == trails$trailname[[i]]) )
}
РЕДАКТИРОВАТЬСЯ К ОТВЕТУ ОТ OP
Это должно быть выполнимо с помощью нескольких настроек. Следует отметить, что приведенный вами пример представляет собой фрейм данных, а функция writeOGR
принимает ...
SpatialPointsDataFrame, SpatialLinesDataFrame или SpatialPolygonsDataFrame, как определено в пакете sp.
У объектов этого типа есть фреймы данных, но также есть и другие атрибуты, которые могут представлять интерес. Давайте предположим, что ваши данные относятся к одному из этих принятых типов. Я буду использовать данные rgdal
городов в качестве примера. Если все, что нам нужно, это сохранить файлы вне нашего сеанса R, пропустите функцию assign
и перетащите subset
в функцию writeOGR
:
library('rgdal')
#loading in data
cities <- readOGR(system.file("vectors", package = "rgdal")[1], "cities")
#taking only first two rows for this example
shap <- cities[1:2,]
#where you want to save these files. This places it on your current working directory
location <- getwd()[[1]]
for(i in 1:nrow(shap)){
# name of file
name <- as.character(shap$NAME[[i]])
# change shap to your 'SpatialPointsDataFrame'
writeOGR(subset(shap, NAME == shap$NAME[[i]]), location, name , driver="ESRI Shapefile")
}