[R] how to combine data of several csv-files

Antje niederlein-rstat at yahoo.de
Tue Jul 31 12:58:15 CEST 2007


Hey,

I had the same question concerning the sd calculation and I got the following 
solution:

list <- split(list, class_vec)
list <- lapply(list, function(x) do.call('rbind', x))

my.mean <- lapply(ret, FUN = function(x) {
	t <- as.matrix(x)
	rm <- as.matrix(apply( t, 1, FUN = function(w) { length(which(is.na(w) == 
TRUE)) } ))
	t <- matrix(t[rm == 0,], ncol=7)

	# I had to do the 2 lines above to remove rows belonging to a class but 
containing NA values... (cannot exclude)

	if(nrow(t) > 1) {
		apply(t, 2, mean)
	} else {
		if(nrow(t) == 1) { as.vector(t) }
		else { NA }
	}
})


Probably, there is a simpler solution to remove the NA rows, but it works ;); 
also with "sd".

Ciao,
Antje


8rino-Luca Pantani schrieb:
>> Hi Jim,
>> that's exactly what I'm looking for. Thank you so much. I think, I 
>> should look for some further documentation on list handling.
> I think I will do the same...................
> Thanks to Jim I learned "textConnection" and "rowMeans".
> 
> Jim, could you please go a step further and tell me how to use lapply to 
> calculate
> the sd instead of the mean of the same items?
> I mean
> sd(-0.6442149 0.02354036 -1.40362589)
> sd(-1.1829260 1.17099178 -0.046778203)
> sd(-0.2047012 -1.36186952 0.13045724)
> etc
> 
> x <- read.table(textConnection("  v1 v2 v3  v4 v5  v6 v7 v8
> NA -0.6442149  0.02354036 -1.40362589 -1.1829260  1.17099178 
> -0.046778203 NA
> NA -0.2047012 -1.36186952  0.13045724  2.1411553  0.49248118 
> -0.233788840 NA
> NA -1.1986041 -0.42197792 -0.84651458 -0.1327081 -0.18690065  
> 0.443908897 NA
> NA -0.2097442  1.50445971  1.57005071 -0.1053442  1.50050976 
> -1.649740180 NA
> NA -0.7343465 -1.76763996  0.06961015 -0.8179396 -0.65552410  
> 0.003991354 NA
> NA -1.3888750  0.53722404  0.25269771 -1.2342698 -0.01243247 
> -0.228020092 NA"), header=TRUE)
> 
> 
> 
> 
>



More information about the R-help mailing list