Здесь df
, фиктивный data.frame
с 26 столбцами, каждый из которых содержит случайные значения, поэтому корреляции должны быть достаточно низкими для любой пары столбцов.
cols = lapply(1:26, function(dummy) runif(30))
df = do.call(data.frame, cols)
names(df) = LETTERS
Если вы хотите, чтобы корреляция между столбцом «X» и столбцами «A», «C» и «E» попробуйте sapply
с функцией cor
.
sapply(df[c("A","C","E")], cor, df["X"])
Или используйте номера столбцов:
sapply(df[c(1,3,5)], cor, df[24])
Если вам нужны все перестановочные комбинации корреляций между двумя группами столбцов, попробуйте:
firstGroup <- c(1,3,5,20)
secondGroup <- c(14,20,25)
combos <- expand.grid(firstGroup, secondGroup)
result <- mapply(cor, df[combos$Var1], df[combos$Var2])
resultAsMatrix <- matrix(result, nrow = length(firstGroup), dimnames = list(firstGroup, secondGroup))
Чтобы получить:
> resultAsMatrix
14 20 25
1 -0.22949844 -0.1527876 -0.11877405
3 0.23174965 0.0311125 0.33570756
5 0.01491815 -0.1263007 -0.16688800
20 0.18007802 1.0000000 0.04638838
РЕДАКТИРОВАТЬ:
@ user20650 отметил, что функция cor
может сравнивать две встроенные матрицы. Итак:
cor(df[firstGroup], df[secondGroup])
возвращает матрицу, которую я создал вручную, выше:
N T Y
A -0.22949844 -0.1527876 -0.11877405
C 0.23174965 0.0311125 0.33570756
E 0.01491815 -0.1263007 -0.16688800
T 0.18007802 1.0000000 0.04638838