我有一个巨大的向量,它有几个NA值,我试图找出这个向量中的最大值(向量都是数字),但由于NA的值,我无法做到这一点。
如何删除NA值才能计算最大值?
发布于 2011-10-10 06:21:49
尝试使用?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-related参数使用不同的名称(并提供不同的选项)。因此,如果NA在函数调用中给你带来了问题,那么在函数的参数中寻找一个内置的解决方案是值得的,我发现通常已经有了一个。
发布于 2011-10-10 06:27:03
na.omit函数是许多回归例程内部使用的函数:
vec <- 1:1000
vec[runif(200, 1, 1000)] <- NA
max(vec)
#[1] NA
max( na.omit(vec) )
#[1] 1000发布于 2019-07-27 01:55:03
使用discard from (适用于列表和向量)。
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] NAhttps://stackoverflow.com/questions/7706876
复制相似问题