【问题标题】:Passing arguments to a list in tapply将参数传递给tapply中的列表
【发布时间】:2013-09-01 09:38:13
【问题描述】:

我是 R 新手,几天来一直无法将参数传递给函数。

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

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

by 应该是一个变量列表(未加引号),但问题是调用函数,变量无法识别:

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

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

谢谢。

【问题讨论】:

  • 您应该给出确切的错误信息。 “没用”对诊断不是很有用。

标签: r function tapply


【解决方案1】:

这行得通:

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

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2012-01-30
    • 2014-09-15
    • 2018-11-29
    相关资源
    最近更新 更多