Если я вас правильно понимаю, вы хотите корреляцию между d
и каждым оставшимся столбцом.
(M <- t(as.matrix(`rownames<-`(df1[-1], df$name))))
# a b c d
# col1 43.78 43.84 37.92 31.72
# col2 43.80 43.40 37.64 31.62
# col3 43.14 42.85 37.54 31.74
Благодаря векторизации мы можем очень легко вычислить корреляцию между d
и остатком:
out <- t(cor(M[, 4], M[, -4]))
R 2 это просто квадрат корреляции ( Ссылка ), которую мы можем cbind
к корреляциям.
`colnames<-`(cbind(out, out^2), c("cor", "r2"))
# cor r2
# a -0.6491118 0.42134617
# b -0.2184630 0.04772607
# c 0.1105508 0.01222148
( Примечание: Если вам интересна форма `colnames<-`
, вы можете прочитать "Advanced R: 6.8.4 Функции замены" .)
Данные
df1 <- structure(list(name = structure(1:4, .Label = c("a", "b", "c",
"d"), class = "factor"), col1 = c(43.78, 43.84, 37.92, 31.72),
col2 = c(43.8, 43.4, 37.64, 31.62), col3 = c(43.14, 42.85,
37.54, 31.74)), class = "data.frame", row.names = c(NA, -4L
))