r - 按字符拆分 sf 对象而不删除它在 R 中的几何形状

标签 r split sf

我正在尝试 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 数据框,其中包含 NAMEgeometry

如果您将调用调整为:

ncSplit <- split(nc, f = nc[[splitField]])

索引将只返回因子,然后 split() 将按预期工作。

关于r - 按字符拆分 sf 对象而不删除它在 R 中的几何形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260772/

相关文章:

r - 使用 switch 从 ggplot2 函数中转换变量

r - 更改公式中变量的名称

r - 有效读取fasta文件并计算R中的核苷酸频率

python - 基于 Pandas 中竖线分隔的列创建多个新行

r - 车辆从 A 到 B,然后沿着路线从 B 到 A 的动画(在 B 有一些等待时间)

r - R中GIS map 的自动标签放置

r - 使用带分位数的 geom_boxplot

javascript - 需要 Javascript 正则表达式帮助 - 拆分文本

javascript - 在 Imacros 中的 Eval 语句内围绕双引号分割提取的文本

r - geom_sf 如何在不保存绘图的情况下修剪空白