【发布时间】:2018-07-05 02:16:09
【问题描述】:
我有一长串代表不同变量随时间变化的多列。我正在尝试在三个时间点之间建立相关性,例如
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")
}
显然我在写这两个方面都犯了错误。我知道必须有一种我想念的简单方法来做到这一点!
【问题讨论】:
-
只需使用
seq即lapply(7:9, function(i) corr(df1[seq(i, ncol(df1), by = 29)], use = "p"))您可以查看lapply(7:9, function(i) seq(i, ncol(df1), by = 29))的输出 -
另一个选项是
split方法lapply(split.default(df2, (seq_along(df2)-1) %% 29), cor, use = "p")其中'df2' 是df2 <- df1[-(1:6)]
标签: r loops iteration correlation