Как перевести несколько столбцов в числовые и найти коэффициенты корреляции - PullRequest
0 голосов
/ 06 июля 2019

У меня есть набор данных "res.sav", который я прочитал через гавань.Он содержит 20 столбцов, которые называются «Genes1_Acc4», «Genes2_Acc4» и т. Д. Я пытаюсь найти коэффициент корреляции между ними и другим столбцом, который называется «Условие».Я хочу отдельно перечислить все коэффициенты.

Я создал две функции, cor.condition.cols и cor.func, чтобы сделать это.Первый перебирает имена файлов и работает просто отлично.Второй должен был дать мне мои корреляции, которые не работали вообще.Я также создал новое "cor.condition.Genes", которое я хотел бы заполнить корреляциями, в идеале в виде матрицы или фрейма данных.

Я попытался перебрать столбцы с двумя функциями.Однако, когда я пытаюсь передать его, я получаю сообщение об ошибке: «NA введены путем преобразования».Это не был бы конец света (я попытался также подавить предупреждение ()).Но большая проблема, с которой я столкнулся, заключается в том, что моя функция не преобразует указанные столбцы в числовой тип, необходимый для функции cor ().Я получаю сообщение об ошибке «y должно быть числовым» при попытке запустить функцию cor ().Я попытался поместить несколько аргументов внутри и без '' или "', но безуспешно.

Когда я запускаю str (cor.condition.cols), я получаю только строки символов, что заставляет меня думать, что моя функция как-то не работаетс функцией as.numeric.Любые предложения о том, как еще я мог бы пройти через эти столбцы и передать их?

Спасибо, ребята :)

cor.condition.cols <- lapply(1:20, function(x){paste0("res$Genes", x, "_Acc4")})

#save acc_4 columns as numeric columns and calculate correlations
res <- (as.numeric("cor.condition.cols"))
cor.func <- function(x){
  cor(res$Condition, x, use="complete.obs", method="pearson")
}

cor.condition.Genes <- cor.func(cor.condition.cols)

1 Ответ

1 голос
/ 06 июля 2019

Вы можете сделать:

cor.condition.cols <- paste0("Genes", 1:20, "_Acc4")
res2 <- as.numeric(as.matrix(res[cor.condition.cols]))
cor.condition.Genes <- cor(res2, res$Condition, use="complete.obs", method="pearson")

в конце концов короткий вариант:

cor.condition.cols <- paste0("Genes", 1:20, "_Acc4")
cor.condition.Genes <- cor(res[cor.condition.cols], res$Condition, use="complete.obs")

Вот пример с другими данными:

cor(iris[-(4:5)], iris[[4]])
...