【问题标题】:Loop over columns of dataframe in R循环遍历R中的数据框列
【发布时间】:2020-02-17 13:17:41
【问题描述】:

如何循环以对 R 中名称相似的列执行相同的测试?

例如,我有三列,分别命名为 col30、col126、col145。我在想这样的事情:

x <- c(30, 126, 145)

for (i in x) {

  wilcox.test(col(i) ~ level)

}

不工作并提供以下错误:

eval(predvars, data, env) 中的错误:尝试应用非函数

【问题讨论】:

  • 问题是我必须遍历列名,其中第一部分对于所有列 (col) 都是相同的,第二部分正在改变 (30, 126, 145)

标签: r loops multiple-columns


【解决方案1】:

这是一个dplyr 示例:

library(tidyverse)

df %>%
    summarise_at(vars(col30, col126, col145), wilcox.test, y = level)

【讨论】:

    【解决方案2】:

    您可以使用 apply 函数而不是 for loop 并为选定的列迭代相同的测试:

    apply(df[, c(col30, col126, col145)], 2, wilcox.test ~ level)

    【讨论】:

      【解决方案3】:
      x <- c(30, 126, 145)
      for (i in x) {
          wilcox.test(df[,i] ~ level)
      }
      

      df 是你的数据框。

      【讨论】:

        猜你喜欢
        • 2018-09-28
        • 2021-02-08
        • 2018-12-31
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多