[R] function to transform response of a formula

Paul Emberson email at calidasoft.co.uk
Wed Jul 30 14:50:32 CEST 2008


Hi,

I am now trying to use update.formula from within a function but I am 
not able to get the result I want.  Here is an example

f <- function(fm, n) {
     update(fm, n*. ~ .);
}

If I run

 > fm <- formula( y ~ a + b )
 > f(fm,3)
n * y ~ a + b

Now when I try to use the formula, n does not exist.  Is there a way I 
can change my function so that n is replaced by its value within the 
formula created by f?

Thanks,

Paul


email at calidasoft.co.uk wrote:
> Its ok.
> 
> I've just read about update.formula in another message.
> 
> Paul
> 
> Paul Emberson wrote:
>> Hi,
>>
>> I am trying to write a function which takes a formula as input and 
>> outputs a new formula with a different response while keeping the rest 
>> of the formula the same.
>>
>> I.e.
>>
>> respapply : ( y ~ a+b ) -> ( f(y) ~ a + b )
>>
>> I have tried the following but it doesn't work.  The terms become 
>> invalid as shown below.
>>
>> respapply <- function(fm, f) {
>>
>>     fm[[2]] <- f(eval(fm[[2]]))
>>     fm;
>>
>> }
>>
>>  > fm <- formula(y ~ a + b)
>>  > y <- runif(5)
>>  > newfm <- respapply(fm,identity)
>>  > newfm
>>
>> c(0.552921097259969, 0.939932722365484, 0.62522904924117, 
>> 0.899310540175065,
>> 0.877736972644925) ~ a + b
>>
>>  > terms(newfm)
>> Error in terms.formula(fmapply(fm, identity)) :
>>   invalid term in model formula
>>
>> Could someone put me in the right direction of how to correctly write 
>> a respapply function as described.
>>
>> Regards,
>>
>> Paul Emberson
>>
>> ______________________________________________
>> 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.
> 
> ______________________________________________
> 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.



More information about the R-help mailing list