[R] Prevent calculation when only NA

Rui Barradas ruipbarradas at sapo.pt
Mon May 21 12:25:50 CEST 2012


Try this.

check.na <- function(mat){
	nas <- NULL
	for(st in seq.int(ncol(mat)))
		if(sum(is.na(mat[, st])) == nrow(mat) - 1) nas <- c(nas, st)
	if(length(nas)){
		mat <- mat[, -nas]
		mat <- mat[-nas, ]
	}
	mat
}
	
check.na(df1)
      file1 file3
file1   1.0   0.8
file3   0.8   1.0

Note that you must remove both the columns and the rows, it's a correlation
matrix.
And that's also why the 'ncol(mat) minus 1', the diagonal value need not be
NA.

Rui Barradas

jeff6868 wrote
> 
> Hello Rui,
> 
> Thanks for your answer too.
> I tried your proposition too, but by giving the value 0 for this file, it
> still wants to make a calculation with it. As it is looking for the best
> correlation, and then the 2nd best correlation, giving only 0 seems to be
> a problem for the 2nd best correlation at least.
> Maybe the best way to solve the problem would be to introduce in the
> function get.max.cor a line which would delete all the colums containing
> only NAs in my correlation matrix? 
> For example if my calculated correlation matrix is (imagine that the
> numeric values are correlation coefficients for the example):
> 
> x <- data.frame(a = 1:10, b = c(1:5,NA,7:9, NA), c = 21:30, d = NA)
> 
> Maybe is it possible in my function to delete only columns containing 100%
> of NA, in order to have a matrix like this:
> 
>  x <- data.frame(a = 1:10, b = c(1:5,NA,7:9, NA), c = 21:30)
> 
> and to keep other columns even if there're some NAs (the calculation is
> still possible as they're numeric coefficients in the column).
> Actually, it cannot look for the best or the second best correlation
> coefficient in a column if it contains only NA.
> I think that a correlation matrix like this would allow the calculation
> for the next function and the rest of my script.
> 


--
View this message in context: http://r.789695.n4.nabble.com/Prevent-calculation-when-only-NA-tp4630716p4630732.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list