У меня есть dataframe следующим образом:несовместимых размеров при использовании lapply (COR (X, 1: длина (х))
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)
Теперь я хотел бы получить вектор с коэффициентами корреляции каждого вектора с его собственная длина опускаю NAs
. Например: 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)' не определен? –
Я не могу воспроизвести вашу ошибку, заявления в порядке, похоже, работают нормально. – Shape
Хорошо работает для меня, но для столбца c, который дает NA (и это нормально, потому что есть только одно наблюдение). Кстати, вам не нужно «o <-» в вашей привязке в вашем приложении) – Bastien