将函数应用于多个列

时间:2015-09-14 17:58:55

标签: r dataframe sapply

我想将一个函数应用于多个列。我在数据框data中的数据结构如下:

col1 col2 col3
x    x    x
x    x    x
x    x    x

特别是,我想对每列的时间序列应用ADF测试。

我觉得这样的事情可能有用:

f <- function(x) ur.df(x, type = "none", lags = 10, selectlags = "AIC"))
sapply(data, f)

然而,处理&#34;变量&#34;似乎存在问题。列。

如何正确完成?

更新:使用此选项可创建具有随机值的三列:

data = data.frame(matrix(rnorm(30), nrow=10))

1 个答案:

答案 0 :(得分:1)

据我所知,您的代码存在两个问题:

1)在你的函数定义中,你有一个括号太多;它应该是:

f <- function(x) ur.df(x, type = "none", lags = 10, selectlags = "AIC")

2)对于给定的数据集维度,滞后数太高。以下工作(分别注意不同数据集的不同维度和滞后):

library(urca)
data <- data.frame(matrix(rnorm(300), nrow=100))
f <- function(x) ur.df(x, type = "none", lags = 10, selectlags = "AIC")
sapply(data,f)

data2 = data.frame(matrix(rnorm(30), nrow=10))
f2 <- function(x) ur.df(x, type = "none", lags = 3, selectlags = "AIC")
sapply(data2,f2)

它给你以下输出(数字当然可以不同,因为我没有为rnorm设置种子):

  

$ X1增强Dickey-Fuller测试单位根/协整测试   检验统计量的值为:-6.0255

     

$ X2增强Dickey-Fuller测试单位根/协整测试   检验统计量的值为:-7.164

     

$ X3增强Dickey-Fuller测试单位根/协整测试   检验统计量的值为:-5.0921

  

$ X1增强Dickey-Fuller测试单位根/协整测试   检验统计量的值为:-1.2124

     

$ X2增强Dickey-Fuller测试单位根/协整测试   检验统计量的值为:-0.8715

     

$ X3增强Dickey-Fuller测试单位根/协整测试   检验统计量的值为:-0.6598