【问题标题】:Using lapply or loop to create multiple figures from a list of lists of matricies使用 lapply for 循环从矩阵列表中创建多个图形
【发布时间】:2020-07-27 23:28:58
【问题描述】:

我有一个矩阵列表。所有列表具有相同数量的矩阵,所有矩阵具有相同的列数,并且列表中的所有矩阵具有相同的行数,但是,不同列表的矩阵之间的行数不同。我尝试在下面重新创建一个小示例数据集

set.seed(100)
biglist <- list(
  a=list(foo=matrix(sample(1:10,30,replace=TRUE),ncol=3 ),
         bar=matrix(sample(1:10,30,replace=TRUE),ncol=3),
         puppy=matrix(sample(1:10,30,replace=TRUE),ncol=3)
  ),
  b=list(foo=matrix(sample(1:10,24,replace=TRUE),ncol=3),
         bar=matrix(sample(1:10,24,replace=TRUE),ncol=3),
         puppy=matrix(sample(1:10,24,replace=TRUE),ncol=3)
  )
)

我正在尝试为每个矩阵创建一个箱线图,其中列是同一图上的不同箱线图。我可以为单个矩阵执行此操作,但我无法将其应用于整个列表列表。

这是我为单个箱线图编写的​​代码

yoptions=c('foo','bar','puppy')
mynames=c('first','second','third')
titleoptions=c('a','b')


plotdata=biglist$a$foo
colnames(plotdata)=mynames

afoo=ggplot(melt(as.data.table(plotdata)),aes(x=variable,y=value))+
  geom_boxplot()+ggtitle(paste(mynames[1],titleoptions[1],sep=" "))+
  ylab(paste(yoptions[1]))

这给了我想要的列表 a 中的 foo 矩阵。我现在希望能够将其应用于列表中的每个矩阵,更改绘图数据、标题和标签以匹配列表中的相应矩阵,然后将其保存到组合列表和矩阵的变量中。这将导致以下变量,所有变量都附有不同的图: 阿福 一间酒吧 小狗 bfoo 巴巴 双鱼座

我知道它不太像 r,但我的第一个想法是某种嵌套的 for 循环,尽管我不确定在这种情况下它会如何工作。我知道 lapply 用于列表,并且我已经对嵌套的 lapplys(lapplies?)进行了一些研究,但我不确定如何让它生成与我想要生成的数字相对应的多个变量。

非常感谢任何建议!谢谢!

【问题讨论】:

    标签: r list for-loop nested lapply


    【解决方案1】:

    类似这样的东西(两个嵌套循环):

    for(i in 1:length(biglist)) {
    
      sublist <- biglist[[i]]
    
      for(j in 1:length(sublist)) {
    
        plotdata <- sublist[[j]]
        name     <- paste(english::ordinal(j),letters[i],sep="_")
    
        assign(name, ggplot(melt(as.data.table(plotdata)),
          aes(x=variable,y=value))+
          geom_boxplot()+ggtitle(name)+
          ylab(names(sublist)[j]))
    
      }
    
    }
    

    【讨论】:

    • 感谢您的回复!我将如何更改保存它的变量?现在,您将每个图都保存为 afoo,这意味着前一个图将被覆盖;有没有办法通过这个 for 循环更改保存的变量?
    • 您可以使用assign 为地块命名并保存在环境中。
    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 2017-11-22
    • 2021-10-20
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多