首页 > 解决方案 > 在 R 中同时运行多个相关性

问题描述

我试图通过调整我用来进行回归的代码来在 R 中运行几个相关性。

这是我已成功用于回归的现有代码。

combineddvs <- colnames(dfc[,87:100])
form <- paste("yourbehavior_c ~ days + days2 +", combineddvs)
models <- form %>%
  set_names(combineddvs) %>%
  map(~lm(.x, data = dfc))
map(models, summary)

这是我对它的改编,用于我想要运行的相关性。

combineddvs <- c("committed", "goodfaith", "strongfeel")
form <- paste("df$main, df$", combineddvs)
models <- form %>%
  set_names(combineddvs) %>%
  map(~cor(.x))
map(models, summary)

前两行有效,但在尝试创建对象“模型”时出现此错误:

Error in cor(.x) : supply both 'x' and 'y' or a matrix-like 'x'

我知道我需要 x 和 ay 来运行相关性。但是,我试图将这两个都包含在“表单”对象中。

这是显示我正在尝试做的事情的笨拙方式。我有超过 3 个项目,所以这在实践中效率不高。

cor(df$main, df$committed)
cor(df$main, df$goodfaith)
cor(df$main, df$strongfeel)

我怎样才能做到这一点?我愿意修改上述代码或使用完全不同的方法。

标签: rloopstidyversecorrelation

解决方案


data.table,您可以.SD与 一起使用lapply。例如,使用mtcars数据:

library(data.table)
dt <- data.table(mtcars)

dt[, .(lapply(.SD, cor, mpg)), .SDcols = colnames(dt)[2:length(colnames(dt))]]

所以,在你的例子中,

dt[, .(lapply(.SD, cor, main)), .SDcols = c("committed","goodfaith","strongfeel")]]

推荐阅读