[R] Populating then sorting a matrix and/or data.frame
Noah Silverman
noah at smartmediacorp.com
Fri Nov 12 00:33:42 CET 2010
Your errors look exactly like mine.
Changing the option flag does allow me to create the data.frame without
any errors. A quick look confirms that all the values are there and
correct.
However, R has coerced all of my numeric values to strings.
Using your sample code also turns all the numeric values to strings.
Perhaps it has something to do with the way R in interpreting the first
column?
Thanks!
-N
On 11/11/10 1:59 PM, William Dunlap wrote:
> You are right, I mistyped it.
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
>> -----Original Message-----
>> From: John Kane [mailto:jrkrideau at yahoo.ca]
>> Sent: Thursday, November 11, 2010 1:58 PM
>> To: Peter Langfelder; r-help at r-project.org; William Dunlap
>> Subject: Re: [R] Populating then sorting a matrix and/or data.frame
>>
>>
>>
>> --- On Thu, 11/11/10, William Dunlap <wdunlap at tibco.com> wrote:
>>
>>> From: William Dunlap <wdunlap at tibco.com>
>>> Subject: Re: [R] Populating then sorting a matrix and/or data.frame
>>> To: "Peter Langfelder" <peter.langfelder at gmail.com>,
>> r-help at r-project.org
>>> Received: Thursday, November 11, 2010, 4:19 PM
>>> Peter,
>>>
>>> Your example doesn't work for me unless I
>>> set options(stringsAsFactors=TRUE) first.
>>
>> Don't you mean stringsAsFactors=FALSE here? At least I get
>> the same results you do but with stringsAsFactors=FALSE The
>> TRUE condition is giving multiple NAs and error messages
>>
>>
>>
>>
>>
>>> (If I do set that, then all columns of 'results'
>>> have class "character", which I doubt the user
>>> wants.)
>>>
>>>> results <- data.frame()
>>>>
>>>> n = 10
>>>> for(i in 1:n){
>>> + a = LETTERS[i];
>>> + b = i;
>>> + c = 3*i + 2
>>> + d = rnorm(1);
>>> + results <- rbind(results, c(a,b,c,d))
>>> + }
>>> There were 36 warnings (use warnings() to see them)
>>>> warnings()[1:5]
>>> $`invalid factor level, NAs generated`
>>> `[<-.factor`(`*tmp*`, ri, value = "B")
>>>
>>> $`invalid factor level, NAs generated`
>>> `[<-.factor`(`*tmp*`, ri, value = "2")
>>>
>>> $`invalid factor level, NAs generated`
>>> `[<-.factor`(`*tmp*`, ri, value = "8")
>>>
>>> $`invalid factor level, NAs generated`
>>> `[<-.factor`(`*tmp*`, ri, value = "-0.305558353507095")
>>>
>>> $`invalid factor level, NAs generated`
>>> `[<-.factor`(`*tmp*`, ri, value = "C")
>>>
>>>> results
>>> X.A. X.1. X.5. X.1.43055780028799.
>>> 1 A 1
>>> 5 1.43055780028799
>>> 2 <NA> <NA> <NA>
>>> <NA>
>>> 3 <NA> <NA> <NA>
>>> <NA>
>>> 4 <NA> <NA> <NA>
>>> <NA>
>>> 5 <NA> <NA> <NA>
>>> <NA>
>>> 6 <NA> <NA> <NA>
>>> <NA>
>>> 7 <NA> <NA> <NA>
>>> <NA>
>>> 8 <NA> <NA> <NA>
>>> <NA>
>>> 9 <NA> <NA> <NA>
>>> <NA>
>>> 10 <NA> <NA> <NA>
>>> <NA>
>>>
>>> Bill Dunlap
>>> Spotfire, TIBCO Software
>>> wdunlap tibco.com
>>>
>>>> -----Original Message-----
>>>> From: r-help-bounces at r-project.org
>>>> [mailto:r-help-bounces at r-project.org]
>>> On Behalf Of Peter Langfelder
>>>> Sent: Thursday, November 11, 2010 12:25 PM
>>>> To: Noah Silverman
>>>> Cc: r-help at r-project.org
>>>> Subject: Re: [R] Populating then sorting a matrix
>>> and/or data.frame
>>>> On Thu, Nov 11, 2010 at 11:33 AM, Noah Silverman
>>>> <noah at smartmediacorp.com>
>>> wrote:
>>>>> Still doesn't work.
>>>>>
>>>>> When using rbind to build the data.frame, it get
>>> a
>>>> structure mostly full of
>>>>> NA.
>>>>> The data is correct, so something about pushing
>>> into the
>>>> data.frame is
>>>>> breaking.
>>>>>
>>>>> Example code:
>>>>> results <- data.frame()
>>>>>
>>>>> for(i in 1:n){
>>>>> #do all the work
>>>>> #a is a test label. b,c,d are numeric.
>>>>> results <- rbind(results, c(a,b,c,d))
>>>>> }
>>>> Works for me:
>>>>
>>>> results <- data.frame()
>>>>
>>>> n = 10
>>>> for(i in 1:n){
>>>> a = LETTERS[i];
>>>> b = i;
>>>> c = 3*i + 2
>>>> d = rnorm(1);
>>>> results <- rbind(results, c(a,b,c,d))
>>>> }
>>>>
>>>>
>>>>> results
>>>> X.A. X.1. X.5. X.0.142223304589023.
>>>> 1 A 1
>>> 5 0.142223304589023
>>>> 2 B 2
>>> 8 0.243612305595176
>>>> 3 C
>>> 3 11 0.476795513990516
>>>> 4 D
>>> 4 14 1.0278220664213
>>>> 5 E
>>> 5 17 0.916608672305205
>>>> 6 F
>>> 6 20
>>> 1.61075985995586
>>>> 7 G
>>> 7 23 0.370423691258896
>>>> 8 H
>>> 8 26 -0.0528603547004191
>>>> 9 I
>>> 9 29 -2.07888666920403
>>>> 10
>>> J 10 32
>>> -1.87980721733655
>>>> Maybe there's something wrong with the calculation you
>>> do?
>>>> 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.
>>> ______________________________________________
>>> 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.
>>>
>>
>>
> ______________________________________________
> 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