首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从向量中删除NA值

从向量中删除NA值
EN

Stack Overflow用户
提问于 2011-10-10 06:08:07
回答 7查看 577.8K关注 0票数 212

我有一个巨大的向量,它有几个NA值,我试图找出这个向量中的最大值(向量都是数字),但由于NA的值,我无法做到这一点。

如何删除NA值才能计算最大值?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-10-10 06:21:49

尝试使用?max,您将看到它实际上有一个na.rm =参数,缺省情况下设置为FALSE。(这是许多其他R函数的默认设置,包括sum()mean()等。)

设置na.rm=TRUE就是为了满足您的要求:

代码语言:javascript
复制
d <- c(1, 100, NA, 10)
max(d, na.rm=TRUE)

如果您确实想删除所有的NA,请改用这个习惯用法:

代码语言:javascript
复制
d <- d[!is.na(d)]

最后注意:其他函数(例如table()lm()sort())的NA-related参数使用不同的名称(并提供不同的选项)。因此,如果NA在函数调用中给你带来了问题,那么在函数的参数中寻找一个内置的解决方案是值得的,我发现通常已经有了一个。

票数 291
EN

Stack Overflow用户

发布于 2011-10-10 06:27:03

na.omit函数是许多回归例程内部使用的函数:

代码语言:javascript
复制
vec <- 1:1000
vec[runif(200, 1, 1000)] <- NA
max(vec)
#[1] NA
max( na.omit(vec) )
#[1] 1000
票数 101
EN

Stack Overflow用户

发布于 2019-07-27 01:55:03

使用discard from (适用于列表和向量)。

代码语言:javascript
复制
discard(v, is.na) 

好处是它很容易使用管道;或者使用内置子设置函数[

代码语言:javascript
复制
v %>% discard(is.na)
v %>% `[`(!is.na(.))

请注意,na.omit不适用于列表:

代码语言:javascript
复制
> x <- list(a=1, b=2, c=NA)
> na.omit(x)
$a
[1] 1

$b
[1] 2

$c
[1] NA
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7706876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档