On Aug 9, 2011, at 00:29 , Dennis Murphy wrote: > Hi: > > Here are a couple of ways; there may well be better ones. > > # (1) Use the get() function: > mean_on_element=function(data, elem_name) { > with(data, mean(get(elem_name))) > } > mean_on_element(data, 'x')
I suspect this goes belly-up if there's a column data$elem_name, though. Given than with() is essentially evalq() which in turn is eval(quote(...),...), the obvious way to achieve the desired effect would be to omit quoting the argument and do eval(substitute(mean(elem_name)), data) or, to avoid unexpected variable capture: mean_on_element <- function(data, elem_name) eval(substitute(mean(elem_name)), data, parent.frame()) mean_on_element(airquality, Day) Or rather: this allows variable capture of the same kind that with() allows: > mean_on_element(airquality, X) [1] 0.575 > with(airquality, mean(X)) [1] 0.575 > > # (2) Lose 'with' and use subscripting instead: > mean_on_element=function(data, elem_name) { > mean(data[[elem_name]]) > } > mean_on_element(data, 'x') > > Since 'x' is quoted in the function call, you need to use code that > can convert the string 'x' to extracting the data object with name x. > > HTH, > Dennis > > On Mon, Aug 8, 2011 at 3:12 PM, thmsfuller...@gmail.com > <thmsfuller...@gmail.com> wrote: >> Hi All, >> >> I want to enclose with() in a function mean_on_element. Obviously, it >> is not working. The problem is how to specify the element name with a >> function body. Does anybody have any suggestion? Thanks! >> >>> data=list(x=1:10) >>> with(data, mean(x)) >> [1] 5.5 >>> >>> mean_on_element=function(data, elem_name) { >> + with(data, mean(elem_name)) >> + } >>> mean_on_element(data, 'x') >> [1] NA >> Warning message: >> In mean.default(elem_name) : >> argument is not numeric or logical: returning NA >> >> >> -- >> Tom >> >> ______________________________________________ >> R-help@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@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. -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com "Døden skal tape!" --- Nordahl Grieg ______________________________________________ R-help@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.