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
答案 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
。