I am using the R 2.2.1 in a Windows XP environment. I have a dataframe with 12 columns and 1,000 rows. (Some of the rows have 1 or fewer values.) I am trying to use rowVars to calculate the variance of each row. I am getting the following message: ?Error in na.remove.default(x) : length of 'dimnames' [1] not equal to array extent? Is there a good work-around?
r user wrote:> I am using the R 2.2.1 in a Windows XP environment. > > I have a dataframe with 12 columns and 1,000 rows. > (Some of the rows have 1 or fewer values.)fewer than 1? So you mean 0? Well, the commonly used estimator for the variance is defined for n>=2 elements only!> I am trying to use rowVars to calculate the variance > of each row.I don't know a function rowVars in R-2.2.1 - and cannot find it ...> I am getting the following message: > ?Error in na.remove.default(x) : length of 'dimnames' > [1] not equal to array extent?Hard to tell without knowing what you actually did. Uwe Ligges> > Is there a good work-around? > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
I've written a rowVars function, but I don't think it throws the error you mention. You're welcome to use it if you like. rowVars <- function(x, na.rm=FALSE, dims=1, unbiased=TRUE, SumSquares=FALSE, twopass=FALSE) { if (SumSquares) return(rowSums(x^2, na.rm, dims)) N <- rowSums(!is.na(x), FALSE, dims) Nm1 <- if (unbiased) N-1 else N if (twopass) {x <- if (dims==0) x - mean(x, na.rm=na.rm) else sweep(x, 1:dims, rowMeans(x,na.rm,dims))} (rowSums(x^2, na.rm, dims) - rowSums(x, na.rm, dims)^2/N) / Nm1 } -- David Brahm (brahm at alum.mit.edu) -----Original Message----- From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of r user Sent: Friday, March 31, 2006 1:40 PM To: rhelp Subject: [R] rowVars I am using the R 2.2.1 in a Windows XP environment. I have a dataframe with 12 columns and 1,000 rows. (Some of the rows have 1 or fewer values.) I am trying to use rowVars to calculate the variance of each row. I am getting the following message: "Error in na.remove.default(x) : length of 'dimnames' [1] not equal to array extent" Is there a good work-around?