Корр между каждой n-й переменной - PullRequest
0 голосов
/ 05 июля 2018

У меня длинный список из нескольких столбцов, представляющих различные переменные с течением времени. Я пытаюсь установить корреляцию между каждым из трех моментов времени, например,

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 голосов
/ 05 июля 2018

Мы можем использовать mapply для параллельного выбора столбцов.

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

Или, если вы попытаетесь продвинуться вперед, другое решение, подобное @ akrun's, может быть

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