Корреляции с чередующимся вторым компонентом в R - PullRequest
0 голосов
/ 19 марта 2020

(я думаю, что это довольно просто, но это не доходит до меня, так как мне не очень удобно использовать циклы в R.)

Я бы хотел запустить серию cor(), где один Элементом функции является тот же столбец, но второй чередуется до следующего столбца. Например, cor(data$V1, data$V2), а затем cor(data$V1, data$V3) и др. c. Я не могу просто запустить матрицу корреляции и использовать use="complete.obs", потому что в каждом сравнении пропущено различное количество случаев.

Как я могу легко сделать это в al oop?

Ответы [ 3 ]

0 голосов
/ 19 марта 2020

На самом деле, тупой ответ, все еще может сделать матрицу корреляции, но с использованием use="pairwise.complete.obs

0 голосов
/ 19 марта 2020

Если пропущенных значений нет, вы можете просто сделать:

set.seed(100)
mat = data.frame(matrix(runif(1000),ncol=100))
colnames(mat) = paste0("V",1:100)
cor(mat[,1],mat[,2:100])

Если пропущенных значений нет:

set.seed(100)
mat = matrix(runif(1000),ncol=100)
mat[sample(length(mat),100)] <- NA
mat = data.frame(matrix(runif(1000),ncol=100))
colnames(mat) = paste0("V",1:100)
cor(mat[,1],mat[,2:100],use="p")
0 голосов
/ 19 марта 2020
lapply(mtcars[,-1], cor, mtcars[,1])
# [[1]]
# [1] -0.852162
# [[2]]
# [1] -0.8475514
# [[3]]
# [1] -0.7761684
# [[4]]
# [1] 0.6811719
# [[5]]
# [1] -0.8676594
# [[6]]
# [1] 0.418684
# [[7]]
# [1] 0.6640389
# [[8]]
# [1] 0.5998324
# [[9]]
# [1] 0.4802848
# [[10]]
# [1] -0.5509251
...