[R] Error: invalid type(list) for variable when using lm()

Bert Gunter gunter.berton at gene.com
Fri Nov 25 20:53:35 CET 2011


Inline below. HOWEVER -- my comments are tentative and need
verification by someone more expert because:

1. This is not a reproducible example, so I have no idea what really happening

2. I don't know what your dbQuery command does.Do you?

But see below for my guesses

-- Bert

On Fri, Nov 25, 2011 at 10:10 AM, David Winsemius
<dwinsemius at comcast.net> wrote:
>
> On Nov 25, 2011, at 11:41 AM, Dhaynes wrote:
>
>> Ok let me clarify
>>
>> I have multidimensional array and I need to convert it to a singular
>> dimensional array.
>> The multidimensional array is 359 rows, 2 cols, 3 deep
>> I need to run a regression model mymatrix[1,1,1:3] and mymatrix [1,2,1:3]
>>
>> This is my current error, which indicates I have the incorrect list type
>> (I
>> have tried functions as.list, as.vector, as.vector)
>>
>> lm(formula = mymatrix[1,1,1:3]~mymatrix[1,2,1:3] )
>> Error in model.frame.default(formula = mymatrix[1, 1, 1:3] ~ mymatrix[1,
>>  :
>>  invalid type (list) for variable 'mymatrix[1, 1, 1:3]'
>>
>>
>> I was unsuccessful at attempting the "str(mymatrix[1,1,1:3]" --Argument
>> not
>> valid model

It should be str(mymatrix)
>>
>> The data.frame function did not create the objects
>> <- data.frame(a=mymatrix[1,1,1:3], b=mymatrix[1,2,1:3])

LHS is missing, but presumably just a typo here. Note that a and b
would contain only 3 values each, presumably not what you want. And,
as I said in my earlier message, you don't need to do this anyway.

>>>
>>> lm(a~b, data=df)
>>
>> Error in eval(expr, envir, enclos) : object 'a' not found
>>
>> Here is my code
>> con <- dbConnect(PostgreSQL(), user="postgres",
>> password="antione",dbname="Education")
>> rs <- dbGetQuery(con, "SELECT (GRADE1[10]) As grade1_t1, (GRADE1[11]) As
>> grade1_t2, (GRADE1[12]) As grade1_t3, (GRADE2[11]) As grade2_t2,
>> (GRADE2[12]) As grade2_t3, (GRADE2[13]) As grade2_t4 FROM attending")

I think the problem is the structure of rs. Is it a data.frame or a
list or what? What does str(rs) give you?

I think you need to **carefully** read ?dbGetQuery


>> myval <- rs
>> attach(myval)
>
> Generally a bad idea to attach objects. It's a sin that is committed by
> several authors but it generally gets in the way of safe code writing.
> Better to use with().

-- I second this.
>
>> names(myval)
>> dim(myval)
>>
>> mymatrix <- array(myval, c(379,2,3))
>>
>> mymatrix[,1,1] <- grade1_t1
>> mymatrix[,1,2] <- grade1_t2
>> mymatrix[,1,3] <- grade1_t3
>> mymatrix[,2,1] <- grade2_t2
>> mymatrix[,2,2] <- grade2_t3
>> mymatrix[,2,3] <- grade2_t4
>
> But what are these various grade-named objects? Are you sure you didn't
> coerce the matrix to character mode? What is str(mymatrix) after this?
>
>
> --
> David.
>>
>> I can do this
>> plot(mymatrix[1,1,1:3],mymatrix[1,2,1:3])
>>
>> On Fri, Nov 25, 2011 at 6:06 AM, Bert Gunter [via R] <
>> ml-node+s789695n4107159h96 at n4.nabble.com> wrote:
>>
>>> Inline below.
>>>
>>> -- Bert
>>>
>>> On Fri, Nov 25, 2011 at 2:31 AM, Milan Bouchet-Valat <[hidden
>>> email]<http://user/SendEmail.jtp?type=node&node=4107159&i=0>>
>>> wrote:
>>>
>>>> Le vendredi 25 novembre 2011 à 00:02 -0800, Dhaynes a écrit :
>>>>>
>>>>> Hello,
>>>>>
>>>>> I am new to R.
>>>>> I have multidimensional array (379,2,3) and I need to create a series
>>>
>>> of
>>>>>
>>>>> linear regressions (379 to be exact)
>>>>> I have the array stored properly I believe, but I can not use the
>>>>> lm(myarray[1,1,1:3]~myarray[1,2,1:3])
>>>>> I have checked to make sure they are exactly the same length.
>>>>> I have also tried endlessly to convert the subset of the array back
>>>
>>> into a
>>>>>
>>>>> vector.
>>>
>>> ?as.vector
>>> Actually an array **is** a vector -- but with an additional "dim"
>>> attribute. Try:
>>>>
>>>> str(x)
>>>
>>>
>>>>>
>>>>> any help would be appreciated.
>>>
>>> 1) Read relevant portions of R docs, like ?array and perhaps "An
>>> Introduction to R."
>>>
>>> 2)  Read and follow the posting guide. In particular, give us a toy
>>> example with the code you used to construct your array. It's difficult
>>> to diagnose the source of engine failure without the car.
>>>
>>> 3) See my comment below.
>>>
>>>> The 'formula' argument of lm doesn't take actual values, but variable
>>>> names. So you need to create vectors containing your data, or pass a
>>>
>>> --This is patently false. Please check before giving obviously wrong
>>> advice:
>>>
>>>> x <- array(rnorm(150), dim= c(10,5,3))
>>>> lm(x[,3,2] ~x[,1,1])
>>>
>>> Call:
>>> lm(formula = x[, 3, 2] ~ x[, 1, 1])
>>>
>>> Coefficients:
>>> (Intercept)    x[, 1, 1]
>>>   -0.1247       0.1171
>>>
>>>
>>>
>>>
>>>
>>>> data frame with these vectors are columns. So, going the latter way :
>>>> df <- data.frame(a=myarray[1,1,1:3], b=myarray[1,2,1:3])
>>>> lm(a ~ b, data=df)
>>>>
>>>> or in one step
>>>> lm(a ~ b, data=data.frame(a=myarray[1,1,1:3], b=myarray[1,2,1:3]))
>>>>
>>>>
>>>> Regards
>>>>
>>>> ______________________________________________
>>>> [hidden email]
>>>> <http://user/SendEmail.jtp?type=node&node=4107159&i=1>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.
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Bert Gunter
>>> Genentech Nonclinical Biostatistics
>>>
>>> Internal Contact Info:
>>> Phone: 467-7374
>>> Website:
>>>
>>>
>>> http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
>>>
>>> ______________________________________________
>>> [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=4107159&i=2>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.
>>>
>>>
>>> ------------------------------
>>> If you reply to this email, your message will be added to the discussion
>>> below:
>>>
>>>
>>> http://r.789695.n4.nabble.com/Error-invalid-type-list-for-variable-when-using-lm-tp3045462p4107159.html
>>> To unsubscribe from Error: invalid type(list) for variable when using
>>> lm(), click
>>> here<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3045462&code=aGF5bmVzZDJAZ21haWwuY29tfDMwNDU0NjJ8MjA1OTM1OTY5>
>>> .
>>>
>>> NAML<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.InstantMailNamespace&breadcrumbs=instant+emails%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>>
>>
>>
>> --
>> View this message in context:
>> http://r.789695.n4.nabble.com/Error-invalid-type-list-for-variable-when-using-lm-tp3045462p4107912.html
>> Sent from the R help mailing list archive at Nabble.com.
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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.
>
> David Winsemius, MD
> West Hartford, CT
>
> ______________________________________________
> 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.
>



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm



More information about the R-help mailing list