열 값을 기반으로 행을 제거하는 방법에 대한 몇 가지 다른 솔루션을 살펴 보았지만 "목록"에 대해서는 수행 할 수 없었습니다 typeof
. 다음 tibble은 분류 훈련을 위해 만들어진 shapefile입니다. shapefile을 래스터 화하려면 지오메트리 데이터가없는 행을 제거해야합니다. 즉, 행 8. 간단히 수행 할 수 df <- df$geometry[-8, ]
있지만 큰 데이터 세트의 경우 비효율적입니다.
geometry 열은 또한 R 데이터 프레임에서 약간 다른 내용을 읽습니다 (어떤 이유로 tibble
함수가 출력 한 내용입니다). 기하학 열은 c
(벡터에서 와 같이)로 읽어야 합니다. 즉 c(-123.1166, 44.67333)
. 그래서 EMPTY
실제로 읽습니다 c(NaN, NaN)
.
나는 typeof
"목록"을 "문자열"로 바꾸고 그것을 제거하는 것에 대해 생각하고 있었다 ??? 어떤 제안?
# 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
. 여기서 list
'geometry with map
, all
값이 아닌지 확인 하고 모든 값이 NaN
있는 항목 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, ., )
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다