df <- dplyr::select(as.data.frame(sf), -geometry)
,但是
select( , -geometry)
步骤感觉不必要。此外,它不会删除几何属性。#1 楼
将st_geometry
属性设置为NULL
。 library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
class(nc)
## [1] "sf" "data.frame"
st_geometry(nc) <- NULL
class(nc)
## [1] "data.frame"
(尽管这不会删除
attr(nc, "sf_column"
):nc <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
as.data.frame(nc)
评论
我之前尝试过nc $ geometry <-NULL,但是您的建议可以解决问题。谢谢。
–eivindhammers
17年1月18日在12:43
有管道版本吗? sf%>%mutate(geometry = NULL)不起作用
–obrl_soil
17-04-25在0:52
也许它叫做“几何”而不是“几何”? (永远不会保持不变)。另一种方法是`x%>%st_set_geometry(NULL)`。尽管我没有仔细检查我在本地的位置,但是这些都可能是在dev中,而不是CRAN中。
–mdsumner
17-4-25的2:03
@mdsumner提出了一个很好的,间接的观点。有人必须实际编写该方法,这不是靠魔术实现的。由于sf是R中的新对象类,因此许多方法可能不可用或无法按预期运行。
–杰弗里·埃文斯(Jeffrey Evans)
17年5月5日在15:49
是否有一种适用于POINT或MULTIPOINT SF对象的方法?当我尝试对其中任何一个执行此操作时,最终得到n×0 df。
–André.B
5月5日20:30
#2 楼
要删除几何列,请使用st_drop_geometry()
: library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
nc_df2 <- nc %>% st_drop_geometry()
class(nc_df2)
#> [1] "data.frame"
在将
st_drop_geometry()
添加到sf包之前(11月) (2018年),则可以使用st_set_geometry()
函数产生相同的结果,如下所示: library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
class(nc)
#> [1] "sf" "data.frame"
nc_df <- nc %>% st_set_geometry(NULL)
class(nc_df)
#> [1] "data.frame"
#3 楼
为什么不简单地选择您想要的列?as.data.frame(sf[,"some column name"])[,1]
评论
这将单列提取为向量(sf $`some column name`是等效且更简单的),并且无法回答问题。
–eivindhammers
7月17日22:54
好了,您可以使用此方法为任意多的列建立索引,因此我不明白为什么这不能解决问题。另外,它比上面建议的方法容易。
– joaoal
7月22日19:52
1.问题是提取整个data.frame,而不是选定的列。除了非常小的数据集之外,此解决方案不是特别适合于此目的,并且当然不是“ sf-native”。 2.我想方法的简单性可能是个问题,但是st_set_geometry,st_drop_geometry和st_geometry几乎都是不言自明的,并且比您的方法短。
–eivindhammers
7月22日20:15
#4 楼
df <- df[,-geometry_column]
或者只是
df[,-geometry_column]
如果您不想创建新对象其中:
geometry_column-存储几何的列
评论
在我这端不起作用。你测试过了吗?我做sf [,-sf $ geometry]并在Ops.sfc(grid.sf $ geometry)中得到错误:参数“ e2”丢失,没有默认值
–eivindhammers
17年1月18日,11:30
尝试sF [,-geometry]而不是sf [,-sf $ geometry]
–ami
17年1月18日在11:34
sf [,-geometry]失败,并出现-“ geometry”错误:一元运算符的无效参数。复制数据(meuse,package =“ sp”); meuse_sf <-st_as_sf(meuse); meuse_sf [,-geometry]
–eivindhammers
17年1月18日在11:38
这根本不起作用。也许它是在早期的sf软件包中完成的,但现在没有。 SF数据框的所有子集都保留了geometry列。请删除。
– Spacedman
18年1月5日在16:51
评论
也可以使用df <-st_drop_geometry(df)@radek是否也在CRAN版本中?
我是这样目前在战队上为0.7-2。它在这里rdocumentation.org/packages/sf/versions/0.7-2/topics / ...