Я пытаюсь split
объект sf
по столбцу, который указан символьным вектором.Обычно с data.frame
объектами я бы использовал []
, чтобы указать столбец для использования функции split
.Например, если бы я хотел разделить Северную Каролину по названиям округов:
library(sf)
# Set field to split on
splitField <- "NAME"
# Read-in data
nc <- st_read(system.file("shape/nc.shp", package = "sf"))
# Split by splitField
ncSplit <- split(nc, f = nc[, splitField])
Однако это приводит к:
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
У меня такое ощущение, что это связано с разницей между class(nc[, splitField])
и class(nc$NAME)
, так как использование $
работает при разбиении.Но использование $
не позволит мне разделить nc
на указанный splitField
, и мне придется жестко его кодировать.
Еще одна вещь, которую я мог бы сделать, это удалить ее геометрию (то есть st_geometry(nc) <- NULL
) и превратить его в data.frame
, что я не хочу делать.
Мне нужна помощь.Как я могу разбить объект sf
по указанному символьному вектору в R
?