[R] Issue with formula conversion

Gang Chen gangchen6 at gmail.com
Wed Aug 27 22:29:26 CEST 2014


Sorry for the misspelling! And more importantly, thanks a lot for the
nice solution and for the quick help!

On Wed, Aug 27, 2014 at 4:22 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>
> On Aug 27, 2014, at 1:11 PM, Gang Chen wrote:
>
>> Good point!
>>
>> Here is an example:
>>
>> library(nlme)
>> fm <- lme(yield ~ nitro, data=Oats, random=list(Block=pdComSymm(~Variety-1)))
>>
>
> One problem is that youa re misspelling the function name.
>
>
>> Now the problem I'm facing is that the following part
>>
>> pdComSymm(~Variety-1)
>>
>> is read in as a string of characters from an external source:
>>
>> ranEff <- 'pdComSymm(~Variety-1)'
>>
>> The following
>>
>> (ranEff1 <- as.formula(ranEff))
>> ~Variety - 1
>>
>> is not what I want. Even though
>>
>> fm <- lme(yield ~ nitro, data=Oats, random=list(Block=pdCompSymm(ranEff1)))
>
>> ranEff <- 'pdCompSymm(~Variety-1)'
>> tt <- parse(text=ranEff)
>
> # Returns an unevaluated expression
>
>> fm <- lme(yield ~ nitro, data=Oats, random=list(Block=eval(tt) ))
>> fm
> Linear mixed-effects model fit by REML
>   Data: Oats
>   Log-restricted-likelihood: -296.5209
>   Fixed: yield ~ nitro
> (Intercept)       nitro
>    81.87222    73.66667
> snipped rest of output.
>
> --
> David
>
>>
>> works, I don't know the 'pdCompSymm' part in advance and would like to
>> make the process automatic.
>>
>> On Wed, Aug 27, 2014 at 3:49 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>>>
>>> On Aug 27, 2014, at 12:44 PM, Gang Chen wrote:
>>>
>>>> Thanks for the help! However, I just need to get
>>>>
>>>> pdCompSymm(~1 + Age)
>>>
>>> That's not a formula in the R sense of the word. You should do a better job of posting a use case. Perhaps you want an expression?
>>>
>>> --
>>> David.
>>>>
>>>> without a tilde (~) at the beginning.
>>>>
>>>> On Wed, Aug 27, 2014 at 3:34 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>>>>>
>>>>> On Aug 27, 2014, at 11:19 AM, Gang Chen wrote:
>>>>>
>>>>>> A random effect formulation for R package nlme is read in as a string
>>>>>> of characters from an input file:
>>>>>>
>>>>>> ranEff <- "pdCompSymm(~1+Age)"
>>>>>>
>>>>>> I need to convert 'ranEff' to a formula class. However, as shown below:
>>>>>>
>>>>>>> as.formula(ranEff)
>>>>>> ~1 + Age
>>>>>>
>>>>>> the "pdCompSymm" is lost in the conversion. Any solutions?
>>>>>
>>>>> as.formula(paste("~",ranEff))
>>>>> ~pdCompSymm(~1 + Age)
>>>>> --
>>>>>
>>>>> David Winsemius
>>>>> Alameda, CA, USA
>>>>>
>>>
>>> David Winsemius
>>> Alameda, CA, USA
>>>
>
> David Winsemius
> Alameda, CA, USA
>



More information about the R-help mailing list