从vector中删除NA值
如何从vector中删除NA值?
我有一个巨大的向量,有一些NA值,我试图find该向量中的最大值(vector是所有数字),但我不能这样做,因为NA值。 
如何删除NA值,以便我可以计算最大值?
 尝试?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在函数调用中遇到问题,那么在函数的参数中检查一个内置的解决scheme是值得的。 我发现那里通常有一个。 
  na.omit函数是很多回归例程在内部使用的: 
 vec <- 1:1000 vec[runif(200, 1, 1000)] <- NA max(vec) #[1] NA max( na.omit(vec) ) #[1] 1000 
 你可以调用max(vector, na.rm = TRUE) 。 更一般地说,你可以使用na.omit()函数。 
  ?max显示你有一个额外的参数na.rm ,你可以设置为TRUE 。 
 除此之外,如果你真的想删除NA ,只需使用如下所示: 
 myvec[!is.na(myvec)] 
以防万一有新来的R想简化回答原来的问题
如何从vector中删除NA值?
这里是:
 假设你有一个向量foo如下: 
 foo = c(1:10, NA, 20:30) 
 运行length(foo)给出22。 
 nona_foo = foo[!is.na(foo)] 
  length(nona_foo)是21,因为NA值已被删除。 
 记住is.na(foo)返回一个布尔matrix,所以用这个值的相反的索引foo会给你所有不是NA的元素。