How can I remove columns with NaN entries ?
Here is my simple example:
data <- read.csv("test.csv") xdata <- data[3:length(data)] xs <- lapply(xdata, function(x){(x - mean(x))/sqrt(var(x))}) x <- data.frame(xs) x
C D E F 1 -0.7071068 NaN -0.7071068 -0.7071068 2 0.7071068 NaN 0.7071068 0.7071068
I am sure it is possible to remove column D (with NaN's) in some simple fashion, using is.nan function
without explicitly looping through, and I am sure I was able to do it in the past, but I cannot recall how.
In addition to Andy's helpful suggestion, if your data is a matrix rather than a data.frame, you can use which() with arr.ind=TRUE. For this example, Andy's suggestion is cleaner, however.
> foo <- as.matrix(foo)
> foo
C D E F
1 -0.7071068 NaN -0.7071068 -0.7071068
2 0.7071068 NaN 0.7071068 0.7071068
> which(is.nan(foo))
[1] 3 4
> which(is.nan(foo),arr.ind=TRUE)
row col
1 1 2
2 2 2
> unique(which(is.nan(foo),arr.ind=TRUE)[,2])
[1] 2
>-- Indigo Industrial Controls Ltd. http://www.indigoindustrial.co.nz 64-21-343-545 [EMAIL PROTECTED]
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help
