p_list <- list() for (i in 11) { res <- rcorr(data[,i], data[,i+11]) p_value <- signif(res$P[1,2], 2) cor_value <- round(res$r[1,2], 2) # 每次新建一个绘图数据框: data_new <- data[,c(i,i+11)] colnames(data_new) <- c("x", "y") p <- ggplot(data_new,aes(x = x, y = y))+ geom_point(color = "#988d7b")+ geom_smooth(method = "lm", formula = y ~ x, # 调整置信区间颜色: fill = "#b2e7fa", color = "#00aeef", alpha = 0.8)+ theme_bw()+ ylab(colnames(data)[i])+ theme( # 去除网格线: panel.grid = element_blank(), # 修改坐标轴标签 axis.title = element_text(face = "bold.italic"), # 标题居中: plot.title = element_text(hjust = 0.5, size = 10) )+ labs(title = paste0("r =", cor_value, ", q = ", p_value)) p_list[[i-1]] <- p }
时间: 2024-02-14 10:12:24 浏览: 64
vue v-for 使用问题整理小结
这段代码中有一个问题:
1. 循环中的 `i` 只被赋值为了数字 `11`,应该将循环条件改为 `2:ncol(data)-11`,以便按顺序依次计算每列数据与后11列数据的相关系数,并绘制散点图。
修改后的代码如下:
```
data <- matrix(rnorm(100), ncol=12)
p_list <- list()
cor_value <- NULL
p_value <- NULL
for (i in 2:ncol(data)-11) {
res <- rcorr(data[,i], data[,i+11])
p_value <- signif(res$P[1,2], 2)
cor_value <- round(res$r[1,2], 2)
# 每次新建一个绘图数据框:
data_new <- data[,c(i,i+11)]
colnames(data_new) <- c("x", "y")
p <- ggplot(data_new,aes(x = x, y = y))+
geom_point(color = "#988d7b")+
geom_smooth(method = "lm", formula = y ~ x,
# 调整置信区间颜色:
fill = "#b2e7fa", color = "#00aeef", alpha = 0.8)+
theme_bw()+
ylab(colnames(data)[i])+
theme(
# 去除网格线:
panel.grid = element_blank(),
# 修改坐标轴标签
axis.title = element_text(face = "bold.italic"),
# 标题居中:
plot.title = element_text(hjust = 0.5, size = 10)
)+
labs(title = paste0("r =", cor_value, ", q = ", p_value))
p_list[[i-1]] <- p
}
p_list
```
这个代码会随机生成一个100行12列的数据矩阵,并对每列数据与对应后11列数据进行相关系数计算并绘制散点图,最后将每次循环绘制的图存储在 `p_list` 列表中。
阅读全文