[R] Error when using anova(lm())
David Winsemius
dwinsemius at comcast.net
Fri Oct 8 19:13:53 CEST 2010
On Oct 8, 2010, at 1:09 PM, Alison Callahan wrote:
> See below.
>
> On Fri, Oct 8, 2010 at 1:01 PM, David Winsemius <dwinsemius at comcast.net
> > wrote:
>>
>> On Oct 8, 2010, at 12:46 PM, Alison Callahan wrote:
>>
>>> Hello all,
>>>
>>> I am trying to perform an ANOVA on some data in a data frame, but
>>> when
>>> I try to use lm(), I get the following error:
The question that should have been posed was how did you use lm()?
It could be that the inappropriate use of a factor as a dependent
variable was the cause. Did you use something like:
lm(island_id ~ refseq_better, data=dfrm) # ??
Example:
> dfrm <- data.frame(a=factor(rnorm(10)), b=rnorm(10))
> lm(a ~ b, data=dfrm)
Error in storage.mode(y) <- "double" :
invalid to change the storage mode of a factor
In addition: Warning message:
In model.response(mf, "numeric") :
using type="numeric" with a factor response will be ignored
>>>
>>> Error in storage.mode(y) <- "double" :
>>> invalid to change the storage mode of a factor
>>> In addition: Warning message:
>>> In model.response(mf, "numeric") :
>>> using type="numeric" with a factor response will be ignored
>>>
>>> Here is a subset of my data:
>>>
>>> island_id refseq_better total refseq_proportion
>>> fiveprime threeprime island_size
>>> 1a 29 57 0.508771929824561
>>> 11127 201378 190251
>>> 1c 27 90 0.3
>>> 6303879 6600994 297115
>>> 1d 33 115 0.28695652173913
>>> 7001283 7421591 420308
>>> 2b 11 42 0.261904761904762
>>> 4381375 4520137 138762
>>> 2d 27 81 0.333333333333333
>>> 5203929 5497271 293342
>>> 3a 44 141 0.312056737588652
>>> 28792 552044 523252
>>>
>>> When I use sapply(dataframe,mode) to check the modes of the columns,
>>> this is my output:
>>>
>>> island_id refseq_better total
>>> refseq_proportion
>>> "numeric" "numeric" "numeric"
>>> "numeric"
>>> fiveprime threeprime island_size
>>> "numeric" "numeric" "numeric"
>>
>> So?
>>
>>> mode(factor(1:10))
>> [1] "numeric"
>>
>> Storage mode is not the right question. "class" is the correct
>> question.
>> Best would be to try is.factor()
>
> Looking at the error message, the problem does appear to be with
> storage mode ... is this affected by whether the variables are
> factors? Note this part of the error:
>
> Error in storage.mode(y) <- "double" :
> invalid to change the storage mode of a factor
>
>>
>>
>>> How do I need to change the format of my data frame so that I do not
>>> get the above error?
>>
>> Figure out which of your columns are factors and apply the FAQ 7.12
>>
>> --
>> David.
>>>
>>> Thanks!
>>>
>>> Alison Callahan
>>> PhD candidate
>>
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>>
> Thanks,
>
> Alison
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list