使用不同的参数将函数应用于每一列

时间:2018-09-26 14:58:17

标签: r

我想将BoxCox函数应用于时间序列矩阵的每一列:

lapply(ts_data, function(x,lambda) {BoxCox(x,lambda)}, lambda = 0.4)

问题是,我不想将每列的lambda固定为固定的全局参数。相反,我有一个包含不同lambda的向量vec_lambda,对于ts_data的每一列,都预先计算了一些不同的vec_lambda

您知道如何使用lapply或类似的东西吗?

2 个答案:

答案 0 :(得分:1)

如果它是data.frame,我们可以使用Map

Map(BoxCox, ts_data, lambda = v1)

其中'v1'是vector值中的lambda,等于'ts_data'的列数


如果它是matrix,则遍历列序列

lapply(seq_len(ncol(ts_data)), function(i) BoxCox(ts_data[,i], lambda = v1[i]))

答案 1 :(得分:0)

此外,您可以使用mapply,mapply具有data.framelist的方法

#a bit modified from mapply help page example
mapply(function(x, y) sqrt(x) + y,  #BoxCox
   data.frame(x=c(1,2,3),y=c(4,5,6),z=c(7,8,9)),  #ts_data
   c(A = 10, B = 0, C = -10)) .  #lambda