R新手在这里。
我正在学习各种功能,我在运行时遇到了问题:
newfunction = function(x) {
limit = ncol(x)
for(i in 1:limit){
if(anyNA(x[,i] == T)) {
x[,i] = NULL
}
}
}
newfunction(WBD_SA)
我收到错误:Error in '[.data.frame(x, , i) : undefined columns selected
我正在尝试从我的数据集WBD_SA中删除所有具有任何NA值的列。
我知道na.omit()
会删除带有NA值的行,但不确定是否有列的内容。
任何有关可以实现此目标的软件包/功能的建议也值得赞赏。
干杯!
答案 0 :(得分:0)
当您迭代列时,使用x[,i] = NULL
删除列,将列数减少1.除非i
是最后一列,否则将为{{{\ n}的未来值产生错误1}}。你应该做这样的事情
i
good_cols = apply(x,2,function(x) {!any(is.na(x))})
x = x[,good_cols]
将apply(x,margin,function)
应用于function
维度(值为1的行,值为2的列;数组可能为3或更高){{1} },这比循环更有效(并且不会导致错误从中途改变margin
。)