我有一长列的清单,这些列代表了一段时间内的不同变量。我正在尝试在三个时间点之间进行关联,例如
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")
}
很显然,我在撰写这两个文章时都犯了错误。我知道必须有一种简单的方法来做到这一点,而我很想念!
答案 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"))