我需要遍历文件,然后为每个文件创建一个对象:
以下是一个例子:
filenames <- Sys.glob("/Users/Desktop/*.nwk")
for (i in filenames ) {
print(paste0("Processing the phylogeny: ",i))
p <- a code that generate a figure
}然后我生成了5个数字,我用这个代码调用:
multiplot(p1,p2,p3,p4,p5 ncol=2, labels=c('A', 'B','C','D','E'))但我想知道如何将1,2等值赋值到变量对象p中?
我尝试创建一个nb=1对象,然后将其赋值为p+nb <- a code that generate a figure,但它不起作用。
发布于 2021-01-13 09:11:46
有用于绘制/合并多个地块的专用包。拼凑、牛仔、网格、鸡蛋等。
使用lapply在列表中生成ggplot对象,然后使用cowplot::plot_grid,如下所示:
cowplot::plot_grid(
plotlist = lapply(list.files(...), function(i){
#import file
d <- read.table(i)
#plot
ggplot(d, aes(...)) + geom_...
}),
ncol = 2)发布于 2021-01-13 08:57:02
您可以这样做,但我建议不要在全局环境中创建5个绘图对象。将情节的输出存储在列表中。
list_plot <- vector('list', length(filenames))
for (i in seq_along(filenames)) {
cat("\nProcessing the phylogeny: ",filenames[i])
list_plot[[i]] <- a code that generate a figure using filenames[i] to read file
}
do.call(multiplot, c(list_plot, ncol=2, labels=c('A', 'B','C','D','E')))发布于 2021-01-13 08:58:04
我找到了一种方法:
Phylo_name<-paste0("p",nb,sep="")
eval(call("<-", as.name(Phylo_name), ggtree(tr = phylo,
mapping = aes(color = group)) + geom_tiplab() + theme(legend.position="right")+
scale_color_manual(values=color_vector)))https://stackoverflow.com/questions/65698409
复制相似问题