如何使用apply函数对多列数据执行hpfilter滤波并解决相关报错
报错原因
你编写的代码在apply的函数调用环节没有传入待处理的列数据,hpfilter必填的第一个参数x(即待滤波的时间序列对象)缺失,因此触发报错。
正确实现代码
方法1:基础apply+匿名函数实现批量处理
# 对指定列逐列执行hp滤波,返回结果列表 hp_filter1 <- apply(dataset[,2:ncol(dataset)], 2, function(col) { hpfilter(x = col, freq = 1600, type = "lambda") })
方法2:直接提取滤波后的分量(趋势/周期)
如果需要直接得到整理好的趋势项或周期项数据框,可以用如下写法:
# 提取所有列的趋势项,输出为数据框 hp_trend <- apply(dataset[,2:ncol(dataset)], 2, function(col) { hpfilter(x = col, freq = 1600, type = "lambda")$trend }) |> as.data.frame() # 提取所有列的周期项,输出为数据框 hp_cycle <- apply(dataset[,2:ncol(dataset)], 2, function(col) { hpfilter(x = col, freq = 1600, type = "lambda")$cycle }) |> as.data.frame()
内容的提问来源于stack exchange,提问作者kaix
相关产品推荐
相关产品推荐

