在R中的For循环中运行Correlation

时间:2018-01-19 04:35:46

标签: r statistics data-science

我正在尝试在for循环中在R中运行大约14个数据帧的相关性。代码在for循环之外工作(没有连接)但不在for循环中。给我错误"二元运算符的非数字参数"

Image showing one of the data frames in the for loop that the correlation is being run on

#for loop to go through each crime type

    y<- unique(crimeSummary$cType) #To get the types of crime that I am trying to the run the corr on. 
    for(i in 1:length(y)){
      cor.test(paste("mergedpoW"+y+"$total.x", sep = "."), paste("mergedpoW"+y+"$total.y",sep = "."))
    }

1 个答案:

答案 0 :(得分:1)

您可以使用eval(parse())将字符串计算为代码。例如:

y <- unique(iris$Species) 
species_means <- rep(NA, 3)
for(i in 1:length(y)){
  string <- paste0("mean(iris$Sepal.Length[iris$Species=='", y[i], "'])")
  print(string)
  species_means[i] <- eval(parse(text=string))
}
print(species_means)

还有几点要点:

  • 您无法在(基础)R中使用+进行字符串连接。因此,在您的情况下,请使用逗号替换+ - paste("mergedpoW", y, "$total.x", sep = ".")(顺便说一句,在示例中应该sep""吗?)

  • 有更简单/更简洁的方式来汇总多个数据框 - 例如您可以将所有df收集到一个列表中,然后使用lapply(df_list, your_summary_function)

希望这有帮助!