我正在尝试在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 = "."))
}
答案 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)
希望这有帮助!