我正在尝试 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)
, 作为使用 $
拆分时有效。但是使用 $
不允许我 split nc
通过指定splitField
我将不得不对其进行硬编码。
我可以做的另一件事是删除它的几何图形(即 st_geometry(nc) <- NULL
)并将其变成 data.frame
,我不想这样做。
我需要一些帮助。如何拆分 sf
R
中指定字符向量的对象?
最佳答案
错误是因为 nc[, splitField]
没有返回单个向量,而是返回一个两列 sf
数据框,其中包含 NAME
和 geometry
。
如果您将调用调整为:
ncSplit <- split(nc, f = nc[[splitField]])
索引将只返回因子,然后 split()
将按预期工作。
关于r - 按字符拆分 sf 对象而不删除它在 R 中的几何形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260772/