답변:
을 시도 ?max
하면 실제로 na.rm =
기본적으로로 설정된 인수 가 있음을 알 수 FALSE
있습니다. (즉 포함한 다른 많은 R 기능에 대한 공통 기본이다 sum()
, mean()
등)
설정 na.rm=TRUE
은 원하는 것을 수행합니다.
d <- c(1, 100, NA, 10)
max(d, na.rm=TRUE)
모든을 제거 NA
하려면 대신이 관용구를 사용하십시오.
d <- d[!is.na(d)]
마지막 주 : 다른 기능 (예를 들어 table()
, lm()
및 sort()
)가 NA
서로 다른 이름을 사용 (다른 옵션을 제공합니다) - 관련 인수를. 따라서 NA
함수 호출에서 문제가 발생하면 함수의 인수 중 내장 솔루션을 확인하는 것이 좋습니다. 나는 일반적으로 이미 존재하는 것을 발견 했다.
max()
이 어떻게 동작하는지에 관한 것입니다 (예를 들어, 수행 할 때 max(c(NA, NA)
). 개인적으로는 그 행동이 합리적이라고 생각합니다. 나는 그것이 건설되었다 기대하는 그런 일을 할 때 예상되는 결과를 얻을 방법 있도록a <- c(NA, NA); b <- 1:4; max(c(max(a, na.rm = TRUE), max(b, na.rm = TRUE)))
NA
NA
의 벡터에서 모든을 제거 NA
하면 -∞이 아닌 빈 벡터가 필요합니다.
?max
로 na.rm
설정할 수 있는 추가 매개 변수가 있음을 나타 TRUE
냅니다.
그 외에도 s 를 정말로 제거 NA
하려면 다음과 같이 사용하십시오.
myvec[!is.na(myvec)]
na.omit
데이터 프레임 방법도 제외하고 더 일반적입니다.
purrrdiscard
에서 사용 (목록 및 벡터와 함께 작동)
discard(v, is.na)
장점은 파이프를 사용하기 쉽다는 것입니다. 또는 내장 서브 셋팅 기능을 사용하십시오 [
:
v %>% discard(is.na)
v %>% `[`(!is.na(.))
참고 na.omit
목록에서 작동하지 않습니다 :
> x <- list(a=1, b=2, c=NA)
> na.omit(x)
$a
[1] 1
$b
[1] 2
$c
[1] NA
두 가지 base
접근 방식을 비교하는 빠른 벤치 마크를 실행했으며 x[!is.na(x)]
그보다 빠릅니다 na.omit
. 사용자 qwr
는 나도 시도해 보라고 제안했다. purrr::dicard
이것은 상당히 느려졌다.
microbenchmark::microbenchmark(
purrr::map(airquality,function(x) {x[!is.na(x)]}),
purrr::map(airquality,na.omit),
purrr::map(airquality, ~purrr::discard(.x, .p = is.na)),
times = 1e6)
Unit: microseconds
expr min lq mean median uq max neval cld
purrr::map(airquality, function(x) { x[!is.na(x)] }) 66.8 75.9 130.5643 86.2 131.80 541125.5 1e+06 a
purrr::map(airquality, na.omit) 95.7 107.4 185.5108 129.3 190.50 534795.5 1e+06 b
purrr::map(airquality, ~purrr::discard(.x, .p = is.na)) 3391.7 3648.6 5615.8965 4079.7 6486.45 1121975.4 1e+06 c
참고로 다음은 원래 x[!is.na(x)]
vs 테스트입니다 na.omit
.
microbenchmark::microbenchmark(
purrr::map(airquality,function(x) {x[!is.na(x)]}),
purrr::map(airquality,na.omit),
times = 1000000)
Unit: microseconds
expr min lq mean median uq max neval cld
map(airquality, function(x) { x[!is.na(x)] }) 53.0 56.6 86.48231 58.1 64.8 414195.2 1e+06 a
map(airquality, na.omit) 85.3 90.4 134.49964 92.5 104.9 348352.8 1e+06 b
purrr:discard
-Inf
A에 대한d
모든 NAS의.