根据 "typeof" 列表列删除 R 中的行
Removing row in R based on a "typeof" list column
我查看了其他一些关于如何根据列值删除行的解决方案,但无法针对 "list" typeof
执行此操作。以下 tibble 是为分类训练构建的 shapefile。要栅格化 shapefile,我需要删除不包含几何数据的行。即第 8 行。我可以简单地执行 df <- df$geometry[-8, ]
,但这对于大型数据集来说效率很低。
几何列在 R 数据框中的读取也有点不同(出于某种原因,这是 tibble
函数输出的内容)。几何列应该用 c
读取(如矢量)。即 c(-123.1166, 44.67333)
。所以 EMPTY
实际上是 c(NaN, NaN)
。
我正在考虑将 typeof
"list" 变成 "string" 然后删除它???有什么建议吗?
# A tibble: 102 x 3
Class Names2 geometry
<dbl> <fct> <POINT [°]>
1 1 Hole (-123.1166 44.67333)
2 1 Hole (-123.1166 44.67333)
3 1 Hole (-123.1166 44.67332)
4 1 Hole (-123.1167 44.6734)
5 1 Hole (-123.1167 44.6734)
6 1 Hole (-123.1166 44.67344)
7 1 Hole (-123.1165 44.67358)
8 1 Hole EMPTY
9 1 Hole (-123.1167 44.67367)
10 1 Hole (-123.1167 44.67367)
# ... with 92 more rows
这是 map/filter
的一个选项,我们用 map
遍历 list
列几何,检查是否 all
值为 NaN
,到 return filter
中的逻辑向量,以删除所有 NaN
值
library(dplyr)
library(purrr)
df1 %>%
filter(map_lgl(geometry, ~ !all(is.nan(.x)))
如果是sf
对象,一个选项是st_is_empty
library(sf)
df1 %>%
filter(!st_is_empty(geometry)]
也可能是
df1 %>%
st_is_empty(.) %>%
`!` %>%
magrittr::extract(df1, ., )
我查看了其他一些关于如何根据列值删除行的解决方案,但无法针对 "list" typeof
执行此操作。以下 tibble 是为分类训练构建的 shapefile。要栅格化 shapefile,我需要删除不包含几何数据的行。即第 8 行。我可以简单地执行 df <- df$geometry[-8, ]
,但这对于大型数据集来说效率很低。
几何列在 R 数据框中的读取也有点不同(出于某种原因,这是 tibble
函数输出的内容)。几何列应该用 c
读取(如矢量)。即 c(-123.1166, 44.67333)
。所以 EMPTY
实际上是 c(NaN, NaN)
。
我正在考虑将 typeof
"list" 变成 "string" 然后删除它???有什么建议吗?
# A tibble: 102 x 3
Class Names2 geometry
<dbl> <fct> <POINT [°]>
1 1 Hole (-123.1166 44.67333)
2 1 Hole (-123.1166 44.67333)
3 1 Hole (-123.1166 44.67332)
4 1 Hole (-123.1167 44.6734)
5 1 Hole (-123.1167 44.6734)
6 1 Hole (-123.1166 44.67344)
7 1 Hole (-123.1165 44.67358)
8 1 Hole EMPTY
9 1 Hole (-123.1167 44.67367)
10 1 Hole (-123.1167 44.67367)
# ... with 92 more rows
这是 map/filter
的一个选项,我们用 map
遍历 list
列几何,检查是否 all
值为 NaN
,到 return filter
中的逻辑向量,以删除所有 NaN
值
library(dplyr)
library(purrr)
df1 %>%
filter(map_lgl(geometry, ~ !all(is.nan(.x)))
如果是sf
对象,一个选项是st_is_empty
library(sf)
df1 %>%
filter(!st_is_empty(geometry)]
也可能是
df1 %>%
st_is_empty(.) %>%
`!` %>%
magrittr::extract(df1, ., )