数据帧列表的互相关

时间:2016-08-13 09:11:20

标签: r for-loop

我有三个数据框TushkaARQEARQW

我像这样单独使用每个数据帧的互相关代码

# cross correlations with US column

#Tushka

head(Tushka)

#  US    PW1    PW2    PW3    PW4

#1 173.62 153.01 144.65 152.53 137.05

#2 173.57 152.97 144.64 152.52 137.10

#3 173.52 152.95 144.64 152.52 137.11

lag = 200

t3 = data.frame(lag = c(-lag:lag))

vars = names(Tushka[, -1])

for (j in vars) {

 t4 = ccf(Tushka[, 1], Tushka[, j], lag = lag, na.action = na.pass)

 t3[, j] = data.frame(t4$acf)[, 1]

}

但是,如果我创建三个数据帧的列表,我如何使用for-loop或任何其他函数对数据帧列表使用互相关

1 个答案:

答案 0 :(得分:0)

以下是一些可重现的样本数据:

n <- 100
data_list <- list(
  d1 = data.frame(x = runif(n)),
  d2 = data.frame(x = runif(n)),
  d3 = data.frame(x = runif(n))
)

诀窍是使用expand.grid来获取数据帧对。

pairs <- expand.grid(first = names(data_list), second = names(data_list))

现在,您可以循环遍历pairs行,为该行中指定的每对数据帧运行互相关。

lapply(
  seq_len(nrow(pairs)),
  function(i)
  {
    first_data <- data_list[[pairs[i, "first"]]]
    second_data <- data_list[[pairs[i, "second"]]]
    ccf(first_data$x, second_data$x, plot = FALSE)
  }
)