为什么na.omit()不会删除列

时间:2018-06-07 22:21:38

标签: r

na.omit()删除矩阵或数据框中的行,但我想知道为什么它没有删除列而不是行的选项。

我知道有以下解决方案:

df[sapply(df, function(x) !any(is.na(x)))]credits to Erik Iverson-3 from r forum

但为什么r实现的功能不支持它?我认为有点像下面的论点那样实现:

  

na.omit(df,by.rows = FALSE)

这里有一些简单的样本测试数据(如果需要),目标输出被删除第3和第6列:

df<-mtcars
df[5:15,6] <- NA
df[5:15,3] <- NA

1 个答案:

答案 0 :(得分:1)

na.omit函数主要用于处理回归函数的data.frame对象。需要省略个案(即行)以运行数学机器进行回归计算。您可以从lm的na.action参数中看到各种选择,但这适用于许多其他类型的回归。它的基本设计是允许lm成功,否则会产生无用的结果。公式规范是用于遗漏列的设备。

  

na.action
  一个函数,指示当数据包含NA时应该发生什么。默认值由选项的na.action设置设置,如果未设置则为na.fail。 'factory-fresh'默认值是na.omit。另一个可能的值是NULL,没有动作。值na.exclude可能很有用。

选择na.action可能会影响predict的输出。请注意,predict.lm的默认值不同:na.action = na.pass