[R] enclosing with() in a function

Dennis Murphy djmuser at gmail.com
Tue Aug 9 00:29:47 CEST 2011


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

# (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, thmsfuller066 at gmail.com
<thmsfuller066 at 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 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