R中的for循环问题

时间:2019-06-17 18:16:13

标签: r loops

我正在尝试使用循环在数据集的数百列上运行kruskal.test。电子表格中有21列关于元数据的列,不需要以这种方式进行分析,但是包含我需要进行统计分析的分组信息。

tomato = read.csv("2017_2018_16s_table_6.csv")
Tomcom = tomato[,22:713]

members <- colnames(Tomcom)

for (i in members) {
  kruskal.test(i ~ BS2, data = tomato)
}

我收到以下错误消息:

  

model.frame.default中的错误(公式= i〜BS2,数据=番茄):
  可变长度不同(适用于“ BS2”)

但是,如果我用i代替给定的列名,则分析有效。

1 个答案:

答案 0 :(得分:0)

我相信这可以解决问题,但是如果您发布示例数据集,我可以确认。

for (i in 1:length(members)) {
  kruskal.test(get(members[i]) ~ BS2, data = tomato)
}

就像下面的注释一样,这不会保存结果。使用以下方法是将所有结果存储在数据框中的一种方法:

myfunction = function(member){

    kruskal.test(get(members[i]) ~ BS2, data = tomato)

}

 colnames(Tomcom)%>%
    unlist()%>%
    purrr::map(myfunction)