У меня есть кадр данных следующим образом:
a <- c(1,45,5,23,78,NA,NA)
b <- c(1,4,5,NA,NA,NA,NA)
c <- c(4,NA,NA,NA,NA,NA,NA)
d <- c(4,6,7,3,4,23,4)
df <- data.frame(a,b,c,d)
Теперь я хотел бы получить вектор с коэффициентами корреляции каждого вектора с собственной длиной без NA.
Например: cor(df$a[!is.na(df$a)], 1:length(df$a[!is.na(df$a)]))
, который возвращает мне коэффициент линейной корреляции (1,45,5,23,78) с (1,2,3,4,5)
Когда я применяю написанный выше код к одному столбцу, он работает. Однако, когда я включаю функцию в функцию lapply, чтобы получить ее для всех столбцов, я получаю сообщение об ошибке «несовместимые размеры». Я понимаю, что ошибка несовместимых размеров указывает на то, что разные размеры векторов коррелируют. Однако как это возможно, когда я сопоставляю вектор с его длиной...?
result <- lapply(df, function(x){ o <-cor(x[!is.na(x)], 1:length(x[!is.na(x)]))})
Я также попробовал, что также вернуло мне ту же ошибку.
result <- lapply(df, function(x) {o <-cor(c(x[!is.na(x)]),c(1:length(x[!is.na(x)])))})
cor(4, 1)
не определено? - person Dirk Nachbar   schedule 16.11.2016NaN
илиNULL
S? - person Shape   schedule 16.11.2016