Haifeng Xie <xieh <at> wmin.ac.uk> writes: > > If I understand it correctly, something like this should do what you want > > x[!apply(x, 1, function(y) any(is.na(y)), ] > > where x is the dataframe in question. > > Hope that helps. > > Kevin >
I believe he wants to remove *columns* with NAs, not rows (if he wanted to remove rows then complete.cases(x) would work) x[,!apply(x,2,function(y)any(is.na(y))] or x[,!apply(is.na(x),2,any)] (I wasn't sure one could apply() on columns of a data frame -- I'm always a little certain about the matrix <-> data.frame mapping -- but I tried it and you can. Now that I think about it, I don't know why I thought you couldn't. apply() on rows would be more likely to be problematic.) is.na() turns a data frame into a matrix, so x[!sapply(is.na(x),any)] *does not* work. x[complete.cases(t(is.na(x)))] or t(na.omit(t(X))) both do, if your data frame is all numeric. Ben ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
