Le vendredi 13 avril 2012 à 13:08 +0000, John Coulthard a écrit : > Dear R list people > > I loaded a file of numbers into R and got a dataframe of factors. So I tried > to convert it to numeric as per the FAQ using as.numeric(). But I'm getting > errors (please see example), so what am I getting wrong? > > Thanks for your time. > John > > Example... > > #my data object > > f > GSM187153 GSM187154 GSM187155 GSM187156 GSM187157 GSM187158 GSM187159 > 13 7.199346 7.394519 7.466155 8.035864 7.438536 7.308401 7.707994 > 14 6.910426 6.360291 6.228221 7.42918 7.120322 6.108129 7.201477 > 15 8.85921 9.152096 9.125067 6.4458 8.600319 8.97577 9.691167 > 16 5.851665 5.621529 5.673689 6.331274 6.160159 5.65945 5.595156 > 17 9.905257 8.596643 9.11741 9.872789 8.909299 9.104171 9.158998 > 18 6.176691 6.429807 6.418132 6.849236 6.162308 6.432743 6.444664 > 19 7.599871 8.795133 8.382509 5.887119 7.941895 7.666692 8.170374 > 20 9.458262 8.39701 8.402015 9.0859 8.995632 8.427601 8.265105 > 21 8.179803 9.868286 10.570601 4.905013 9.488779 9.148336 9.654022 > 22 7.456822 8.037138 7.953766 6.666418 7.674927 7.995109 7.635158 > GSM187160 GSM187161 GSM187162 > 13 7.269558 7.537711 7.099806 > 14 6.61534 7.125821 6.413295 > 15 8.64715 8.252031 9.445682 > 16 5.639816 5.9257 5.752994 > 17 8.856829 9.043991 8.839183 > 18 6.4307 6.71052 6.5269 > 19 7.674577 7.390617 8.638025 > 20 8.132649 8.755642 8.137992 > 21 9.897561 7.619129 10.242096 > 22 7.836658 7.297986 8.679438 > > class(f) > [1] "data.frame" > > #all the columns in the dataframe are of class 'factor' > > for(i in 1:ncol(f)){if(class(f[,i])!="factor"){print(class(f[,i]))}} > > > #but it won't convert to numeric > > g<-as.numeric(as.character(f)) > Warning message: > NAs introduced by coercion > > g > [1] NA NA NA NA NA NA NA NA NA NA > > g<-as.numeric(levels(f))[as.integer(f)] > Error: (list) object cannot be coerced to type 'integer' That's because you're trying to convert the whole data frame, which is a list of vectors, instead of converting the vectors individually. You can use: g <- sapply(f, function(x) as.numeric(as.character(x)))
But it would probably be better to fix the import step so that you get numeric vectors in the first place. ;-) Cheers ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.