[R] Issue with formula conversion

Gang Chen gangchen6 at gmail.com
Wed Aug 27 22:11:12 CEST 2014


Good point!

Here is an example:

library(nlme)
fm <- lme(yield ~ nitro, data=Oats, random=list(Block=pdComSymm(~Variety-1)))

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)))

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
>



More information about the R-help mailing list