第n个变量之间的校正

时间:2018-07-05 02:16:10

标签: r loops iteration correlation

我有一长列的清单,这些列代表了一段时间内的不同变量。我正在尝试在三个时间点之间进行关联,例如

cor(df1[,c(7,36,65)], use = "p")
cor(df1[,c(8,37,66)], use = "p")
cor(df1[,c(9,38,67)], use = "p")

这很耗时,如果我在不久的将来添加/删除列,我希望能够运行它。如您所见,它显然遵循一种模式,我尝试使用apply来实现这一点:

apply(df1[,c(7:93)], 2, function(x) corr(df1[,c(x, x+29, x+58)], use = "p"))

我也尝试过for循环:

for (i in 7:93) {
  cor(df1[, c(i,i+29,i+58)], use = "p")
}

很显然,我在撰写这两个文章时都犯了错误。我知道必须有一种简单的方法来做到这一点,而我很想念!

1 个答案:

答案 0 :(得分:2)

我们可以使用mapply来并行选择列。

mapply(function(x, y, z) cor(df1[,c(x, y, z)], use = "p"), 7:35, 36:64, 65:93)

或者尝试其他与@akrun类似的解决方案是

sapply(7:35, function(x) cor(df1[,c(x, x+29, x+58)], use = "p"))