[R] Populating then sorting a matrix and/or data.frame
Noah Silverman
noah at smartmediacorp.com
Fri Nov 12 00:38:45 CET 2010
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 <wdunlap at 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 at 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.
More information about the R-help
mailing list