Hi,
I am writing a function and need to pass a function expression as an
argument, for instance,
myfun <- function( express) {
x<- c(1,2,3)
y<-express
}
if I call the above function by myfun( x*2 ), I get 2 as the result,
instead of 2,4,6 , could someone help me to
fix this problem ?
Furthermore, is that possible to operate this expression on different
variables? for example, in myfun(), I
might want to get u*2, z*2, etc. without having to say x<-u, x<-z to
match the expression.
Thanks a lot for your help.
best
Tong Wang <wangtong at usc.edu> writes:> Hi, > I am writing a function and need to pass a function expression as an argument, for instance, > myfun <- function( express) { > x<- c(1,2,3) > y<-express > } > > if I call the above function by myfun( x*2 ), I get 2 as the result, instead of 2,4,6 , could someone help me to > fix this problem ? > Furthermore, is that possible to operate this expression on different variables? for example, in myfun(), I > might want to get u*2, z*2, etc. without having to say x<-u, x<-z to match the expression. > > Thanks a lot for your help.Either pass the expression explicitly using myfun(quote(x*2)) or myfun(expression(x*2)) or use substitute(express) inside the function. -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
On 27 Sep 2006 10:57:15 +0200, Peter Dalgaard <p.dalgaard at biostat.ku.dk> wrote:> Tong Wang <wangtong at usc.edu> writes: > > > Hi, > > I am writing a function and need to pass a function expression as an argument, for instance, > > myfun <- function( express) { > > x<- c(1,2,3) > > y<-express > > } > > > > if I call the above function by myfun( x*2 ), I get 2 as the result, instead of 2,4,6 , could someone help me to > > fix this problem ? > > Furthermore, is that possible to operate this expression on different variables? for example, in myfun(), I > > might want to get u*2, z*2, etc. without having to say x<-u, x<-z to match the expression. > > > > Thanks a lot for your help. > > Either pass the expression explicitly using myfun(quote(x*2)) or > myfun(expression(x*2)) or use substitute(express) inside the function. >Regarding the second option see the source of curve by entering: curve