我有三个数据框Tushka
,ARQE
和ARQW
我像这样单独使用每个数据帧的互相关代码
# 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或任何其他函数对数据帧列表使用互相关
答案 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)
}
)