首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给R中循环中的变量赋值

给R中循环中的变量赋值
EN

Stack Overflow用户
提问于 2021-01-13 08:47:47
回答 3查看 33关注 0票数 1

我需要遍历文件,然后为每个文件创建一个对象:

以下是一个例子:

代码语言:javascript
复制
filenames <- Sys.glob("/Users/Desktop/*.nwk")
for (i in filenames ) {
  print(paste0("Processing the phylogeny: ",i))
    p <- a code that generate a figure 
}

然后我生成了5个数字,我用这个代码调用:

代码语言:javascript
复制
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,但它不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-13 09:11:46

有用于绘制/合并多个地块的专用包。拼凑、牛仔、网格、鸡蛋等。

使用lapply在列表中生成ggplot对象,然后使用cowplot::plot_grid,如下所示:

代码语言:javascript
复制
cowplot::plot_grid(
  plotlist = lapply(list.files(...), function(i){
    #import file
    d <- read.table(i)
    #plot
    ggplot(d, aes(...)) + geom_...
  }),
  ncol = 2)
票数 2
EN

Stack Overflow用户

发布于 2021-01-13 08:57:02

您可以这样做,但我建议不要在全局环境中创建5个绘图对象。将情节的输出存储在列表中。

代码语言:javascript
复制
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')))
票数 1
EN

Stack Overflow用户

发布于 2021-01-13 08:58:04

我找到了一种方法:

代码语言:javascript
复制
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)))
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65698409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档