On Jun 23, 2015, at 3:20 PM, boB Rudis wrote:

> You can do something like:
> 
> aaa <- function(data, w=w) {
>  if (class(w) %in% c("integer", "numeric", "double")) {

I think you will find that inherits(w, "numeric") is more compact and safer. 
Both "integer" and "double" do inherit from "numeric" (and "double" is 
equivalent to "numeric")

The test for 'is.vector' is also going to produce some surprises. List-objects 
may pass that test:

> sum( list(1,2,3))
Error in sum(list(1, 2, 3)) : invalid 'type' (list) of argument

> is.vector( list(1,2,3))
[1] TRUE


> x=1:4
> attr(x, "some_attr") <- "something"
> is.vector(x)
[1] FALSE


-- 
David.
>    out <- mean(w)
>  } else {
>    out <- mean(data[, w])
>  }
>  return(out)
> }
> 
> (there are some typos in your function you may want to double check, too)
> 
> On Tue, Jun 23, 2015 at 5:39 PM, Steven Yen <sye...@gmail.com> wrote:
>> mydata<-data.frame(matrix(1:20,ncol=2))
>> colnames(mydata) <-c("v1","v2")
>> summary(mydata)
>> 
>> aaa<-function(data,w=w){
>>  if(is.vector(w)){
>>    out<-mean(w)
>>  } else {
>>    out<-mean(data[wt])
>>  }
>> return(out)
>> }
>> 
>> aaa(mydata,mydata$v1)
>> aaa(mydata,"v1")      # want this call to work
> 
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to