在 R 中循环字符向量
Loop over character vector in R
我正在尝试构建一个 for() 循环来绘制和保存数据集中基因列表的 ggplot。
我的初始代码如下:
for(i in genelist){
plot <- ggplot() +
geom_density(data = mydata, aes(x=log2(i)), fill="pink", alpha = 0.5) +
xlab(paste("log2 ", i))
ggsave(plot, filename = paste("plot_",i ,".png"))
}
genelist 是一个 chr 向量。
mydata 是一个数据框,其中 colnames 是基因名称,rownames 是患者条形码,matrix 是计数值。
我得到以下错误:
图像节省 11.3 x 5.98
log2(i) 中的错误:数学函数的非数字参数
由于错误似乎来自绘图保存,我尝试了没有以下代码:
for(i in genelist){
plot <- ggplot() +
geom_density(data = mydata, aes(x=log2(i)), fill="pink", alpha = 0.5) +
xlab(paste("log2 ", i))
}
循环结束时没有错误(i = 我在基因列表中的最后一个基因)但是当我尝试显示情节时:
log2(i) 错误:数学函数的非数字参数
我做错了什么?
我们可以写一个函数:
library(ggplot2)
plot_save <- function(i) {
plot <- ggplot() +
geom_density(data = mydata, aes(x=log2(!!sym(i)),
fill="pink", alpha = 0.5)) +
xlab(paste("log2 ", i))
ggsave(plot, filename = paste0("plot_",i ,".png"))
}
并将 genelist
传递给函数。
lapply(genelist, plot_save)
我正在尝试构建一个 for() 循环来绘制和保存数据集中基因列表的 ggplot。 我的初始代码如下:
for(i in genelist){
plot <- ggplot() +
geom_density(data = mydata, aes(x=log2(i)), fill="pink", alpha = 0.5) +
xlab(paste("log2 ", i))
ggsave(plot, filename = paste("plot_",i ,".png"))
}
genelist 是一个 chr 向量。
mydata 是一个数据框,其中 colnames 是基因名称,rownames 是患者条形码,matrix 是计数值。
我得到以下错误:
图像节省 11.3 x 5.98 log2(i) 中的错误:数学函数的非数字参数
由于错误似乎来自绘图保存,我尝试了没有以下代码:
for(i in genelist){
plot <- ggplot() +
geom_density(data = mydata, aes(x=log2(i)), fill="pink", alpha = 0.5) +
xlab(paste("log2 ", i))
}
循环结束时没有错误(i = 我在基因列表中的最后一个基因)但是当我尝试显示情节时:
log2(i) 错误:数学函数的非数字参数
我做错了什么?
我们可以写一个函数:
library(ggplot2)
plot_save <- function(i) {
plot <- ggplot() +
geom_density(data = mydata, aes(x=log2(!!sym(i)),
fill="pink", alpha = 0.5)) +
xlab(paste("log2 ", i))
ggsave(plot, filename = paste0("plot_",i ,".png"))
}
并将 genelist
传递给函数。
lapply(genelist, plot_save)