每 n 个变量之间的 Corr
Corr between every nth variable
我有一个很长的多列列表,表示随时间变化的不同变量。我正在尝试 运行 三个时间点之间的相关性,例如
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")
}
显然我在写这两篇文章时都犯了错误。我知道必须有一个简单的方法来做到这一点,我错过了!
我们可以使用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"))
我有一个很长的多列列表,表示随时间变化的不同变量。我正在尝试 运行 三个时间点之间的相关性,例如
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")
}
显然我在写这两篇文章时都犯了错误。我知道必须有一个简单的方法来做到这一点,我错过了!
我们可以使用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"))