That makes perfect sense. All of my numbers are being coerced into strings by the c() function. Subsequently, my data.frame contains all strings.
I can't know the length of the data.frame ahead of time, so can't predefine it like your example. One thought would be to make it arbitrarily long filled with 0 and delete off the unused rows. But this seems rather wasteful. -N On 11/11/10 2:02 PM, Peter Langfelder wrote: > On Thu, Nov 11, 2010 at 1:19 PM, William Dunlap <wdun...@tibco.com> wrote: >> Peter, >> >> Your example doesn't work for me unless I >> set options(stringsAsFactors=TRUE) first. >> (If I do set that, then all columns of 'results' >> have class "character", which I doubt the user >> wants.) > You probably mean stringsAsFactors=FALSE. > > What you say makes sense, because the c() function produces a vector > in which all components have the same type, wnd it will be character. > If you don't want to have characters, my solution would be > > n = 10 > results <- data.frame(a = rep("", n), b = rep(0, n), c = rep(0, n), d > = rep(0, n)) > for(i in 1:n){ > a = LETTERS[i]; > b = i; > c = 3*i + 2 > d = rnorm(1); > results$a[i] = a > results$b[i] = b > results$c[i] = c > results$d[i] = d > } > >> results > a b c d > 1 A 1 5 -1.31553805 > 2 B 2 8 0.09198054 > 3 C 3 11 -0.05860804 > 4 D 4 14 0.77796136 > 5 E 5 17 1.28924697 > 6 F 6 20 0.47631483 > 7 G 7 23 -1.23727076 > 8 H 8 26 0.83595295 > 9 I 9 29 0.69435349 > 10 J 10 32 -0.30922930 > >> mode(results[, 1]) > [1] "character" >> mode(results[, 2]) > [1] "numeric" >> mode(results[, 3]) > [1] "numeric" >> mode(results[, 4]) > [1] "numeric" > > > > or alternatively > > n = 10 > num <- data.frame(b = rep(0, n), c = rep(0, n), d = rep(0, n)) > labels = rep("", n); > for(i in 1:n){ > a = LETTERS[i]; > b = i; > c = 3*i + 2 > d = rnorm(1); > labels[i] = a > num[i, ] = c(b, c, d) > } > results = data.frame(a = labels, num) > >> results > a b c d > 1 A 1 5 -0.47150097 > 2 B 2 8 -1.30507313 > 3 C 3 11 -1.09860425 > 4 D 4 14 0.91326330 > 5 E 5 17 -0.09732841 > 6 F 6 20 -0.75134162 > 7 G 7 23 0.31360908 > 8 H 8 26 -1.54406716 > 9 I 9 29 -0.36075743 > 10 J 10 32 -0.23758269 >> mode(results[, 1]) > [1] "character" >> mode(results[, 2]) > [1] "numeric" >> mode(results[, 3]) > [1] "numeric" >> mode(results[, 4]) > [1] "numeric" > > > Peter > > ______________________________________________ > 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. ______________________________________________ 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.