在tapply中将参数传递给列表

时间:2013-09-01 09:38:14

标签: r function tapply

我是R的新手,并且在将函数传递给函数几天时遇到了麻烦。

我有一个函数,它使用带有by语句的tapply,我的数据集是列表数据框的形式,所以函数是:

Means = function(data,by,month){
   data1 = list() 
   for (i in 1:length(month)){
        data1[[i]] = tapply(data[[i]]$var1,by,mean)
   }
   data1
}

by应该是变量列表(unquoted),但问题是调用函数,变量无法识别:

temp = Means(data,list(data$var2,data$var3))

这不起作用,问题是数据是一个列表,它不是数据框,有没有办法绕过它或者我应该重塑我的数据? 一种方法是在函数调用中执行for循环,但我宁愿避免使用它,因为这不会为我节省很多使用函数的写法。

谢谢。

1 个答案:

答案 0 :(得分:0)

这有效:

Means = function(data,by){

  data1 = tapply(data$Sepal.Length,by,mean)
  #return value of the function:
  data1
}

Means(iris, list(iris$Petal.Length, iris$Petal.Width))