我还在学习R,但进展顺利。 我想创建一个循环,在其中我将6个变量与1个其他变量相关联,然后使用ggplot绘制它们的图。我可以单独为1个变量做这个,但我想做一个循环。数据文件包含300多个变量,因此我首先为6个变量创建了一个单独的数据框:
queue::size()-1
然后尝试运行此循环
subfieldsdata <-myData[,c("subadj","presuadj", "CA1adj", "CA3adj", "CA4adj", "DGadj")]
这不起作用我现在卡住了...... 我该如何解决这个循环?是否还有一种方法可以为循环的每个变量以不同的方式命名图表?
谢谢!
答案 0 :(得分:0)
可能不是最好的方法,但请看下面的代码才能在循环中运行它。这不是我制作的最漂亮的图表,但很容易用ggplot2制作。如果变量较少,我建议您使用corrplot
包或performanceAnalytics
包来绘制相关性。
# The method the OP was after
require(ggplot2)
for (x in colnames(mtcars)[-1]){
corr <- cor(mtcars[, "mpg"], mtcars[, x], use="everything", method="pearson")
corr <- format(corr, digits=3, nsmall=3)
gp <- ggplot(data=mtcars, aes_string(x= "mpg",y = x)) + geom_point()
gp <- gp + stat_smooth(method="lm") + labs(x = "mpg", y = x)+
theme_linedraw(base_size=25) +
annotate("text", x=15, y=5, label=paste0("Pearson r =", corr))
print(gp)
}
答案 1 :(得分:0)
### CREATE SOME SAMPLE DATA
subfieldsdata <- data.frame("subadj"=rnorm(100,0,1),"presuadj"=rnorm(100,1,2), "CA1adj"=rnorm(100,2,3), "CA3adj"=rnorm(100,2,4), "CA4adj"=rnorm(100,3,2), "DGadj"=rnorm(100,1,3))
myData <- data.frame('NP_Age'=sample(1:100,100))
### MAKE THE LOOP
for (i in 1:ncol(subfieldsdata)) {
output <- cor(subfieldsdata[,i],myData$NP_Age,use="everything", method="pearson")
corr <- format(output, digits=3, nsmall=3) #I ASSUME 'SUBCOR' WAS A TYPO??
gp <- ggplot(data=myData,aes(x=myData$NP_Age,y=subfieldsdata[,i])) + geom_point()
gp <- gp +
stat_smooth(method="lm") +
labs(x="age", y=colnames(subfieldsdata[i])) +
theme_linedraw(base_size=25) +
annotate("text", x=c(75,90), y=1000, label=c("Pearson r =", corr))
print(gp)
}