gpt4 book ai didi

r - 从 `sf` 对象中提取没有几何形状的数据,例如 `sp@data`

转载 作者:行者123 更新时间:2023-12-01 11:19:14 24 4
gpt4 key购买 nike

可能是一个非常基本的问题,但我在 Simple Features R 包的文档中什么也没找到。

我在找原住民sf函数来动态提取一个 sf 对象的所有列,没有几何图形。就像 SP@datasp对象。

以下函数可以完成这项工作,但我更愿意使用 native 函数:

st_data <- function(SF) { SF[, colnames(SF) != attr(SF, "sf_column"), drop = TRUE]}

一个典型的用途是当我想按属性合并两个 sf 数据集时( merge 不适用于两个 sf 对象): merge(SF1, st_data(SF2)) .

在这种情况下,使用 st_geometry(SF2) <- NULL 是不切实际的。因为它不能“即时”工作,而且我不想永久删除几何列和 SF2[,1:5,drop=T]也不切实际,因为我必须查看对象以查看几何列的位置。

使用: sf_0.5-4 - R 3.4.1

最佳答案

我们可以使用 st_geometry<-函数并将几何设置为 NULL .

library(sf)

nc <- st_read(system.file("shape/nc.shp", package="sf"))

nc_df <- `st_geometry<-`(nc, NULL)

class(nc_df)
[1] "data.frame"

如您所见, nc_df现在是一个数据框,所以我认为您可以为您的示例执行以下操作。
merge(SF1, `st_geometry<-`(SF2, NULL))

更新

正如吉尔斯指出的,另一个函数, st_set_geometry ,也可以实现同样的任务。由于使用 st_set_geometry,这可能是更好的选择不需要使用“``”和“<-”来包围 st_geometry功能。

关于r - 从 `sf` 对象中提取没有几何形状的数据,例如 `sp@data`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46084534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com