# [R] R Error, very odd....

Don MacQueen macq at llnl.gov
Mon May 11 16:11:44 CEST 2009

```At 12:37 AM -0700 5/11/09, Katie2009 wrote:
>hi dieter,
>
>the method i'm using is in excel, copying the data, then in r
>
>>  w<-as.data.frame(w)
>
>i've been  doing a bit more fiddling, and have identified the 'class' of the
>column that i'm having trouble with, is classified as 'factor' whilst the
>rest are numeric.
>
>if i just change that column to as.numeric of the column, this has appeared
>to have solved the problem.  Has this changed that data at all though?

Well, you can look at the data to find out. Either just print it, or
perhaps use simple exploration techniques, such as
unique( column)
table(column)
summary(column)
compare before and after converting to numeric

In general, changing a factor to numeric can change the data relative
to what you might think the data actually is.  Here is an example:

>  tmp1 <- c(-1,0,1)
>  tmp2 <- factor(tmp1)
>  tmp3 <- as.numeric(tmp2)
>
>  tmp1
[1] -1  0  1
>  tmp2
[1] -1 0  1
Levels: -1 0 1
>  tmp3
[1] 1 2 3

tmp3 is  clearly not the same as tmp1.

>  tmp4 <- as.numeric(format(tmp2))
>  tmp4
[1] -1  0  1

Evidently, R is creating a factor from a column that you think is
numeric. Your job is to find out why. I would guess that you have,
somewhere in the column, an entry that isn't a number. Perhaps a
typographical error in the spreadsheet column. The effect of
inputting as absolute values vs with negative numbers should give a
clue to that.

Try
tmp <-  as.numeric(format( column ))
any(is.na(tmp))
and if that is TRUE, then
column[is.na(tmp)]

-Don

>Thanks.
>
>
>Dieter Menne wrote:
>>
>>
>>
>>  Katie2009 wrote:
>>>
>>>  I'm trying to analyse some excel data in R.  The problem is that when i
>>>  input the data with the first column as absolute values, everything works
>>>  fine, can analyse as normal.  When I leave the first column unchanged to
>>>  import negative numbers as well I get:
>>>
>>>  Error in storage.mode(y) <- "double" :
>>>    invalid to change the storage mode of a factor
>>>  In model.response(mf, "numeric") :
>>>    using type="numeric" with a factor response will be ignored
>>>
>>>
>>
>>  You did not tell us anything how you got the data from Excel, so I have to
>>  guess. Try to re-arrange your Excel row so that the first (3 ? check the
>>  docs; which docs? your unknown function's) lines contain non-missing data.
>>
>>  Dieter
>>
>
>--
>View this message in context: http:// www.
>nabble.com/R-Error%2C-very-odd....-tp23477195p23478471.html
>Sent from the R help mailing list archive at Nabble.com.
>
>______________________________________________
>R-help at r-project.org mailing list
>https:// stat.ethz.ch/mailman/listinfo/r-help
>and provide commented, minimal, self-contained, reproducible code.

--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062

```