我想将BoxCox函数应用于时间序列矩阵的每一列:
lapply(ts_data, function(x,lambda) {BoxCox(x,lambda)}, lambda = 0.4)
问题是,我不想将每列的lambda固定为固定的全局参数。相反,我有一个包含不同lambda的向量vec_lambda
,对于ts_data
的每一列,都预先计算了一些不同的vec_lambda
。
您知道如何使用lapply
或类似的东西吗?
答案 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.frame
和list
的方法
#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