【问题标题】:create boxplots with first element of first row of multiple dataframes使用多个数据框的第一行的第一个元素创建箱线图
【发布时间】:2015-05-27 09:32:47
【问题描述】:

我有一个数据框列表。每个数据框有 6 行。我想创建 6 个箱线图。 first 箱线图应采用第一列的第一行 的值。 第二个箱线图应该取第一列的第二行等的值。

我想得到这样的结果:example image

每一行应该是水平轴上的一个箱线图。

现在我已经开始循环执行了,但我认为这不是要走的路:

for (counter in seq(from = 1, to = wins)) {
    res <- (lapply(mylist, function(x) x[counter,1]))
    boxplot(res)
}

变量mylist 包含数据帧。我已经使用lapply 来获取第一个/第二个/等。根据counter 变量,所有数据帧上的行元素。但是,我认为我还必须避免循环,但这需要一个“更好的”lapply,它还循环遍历mylist 中的数据帧行。

【问题讨论】:

    标签: r boxplot lapply


    【解决方案1】:

    也许不是你想要的那一种,但这对我有用

    # Add a column to each data frame with the row index
    for (i in seq_along(mylist)) {
      mylist[[i]]$rowID <- 1:nrow(mylist[[i]])
    }
    
    # Stick all the data frames into one single data frame
    allData <- do.call(rbind, mylist)
    
    # Split the first column based on rowID
    boxList <- split(allData[,1], allData$rowID)
    
    # boxplot likes a list
    boxplot(boxList)
    

    【讨论】:

    • 酷。看起来不错。如何将绘图保存到 Windows 上的文件中?
    • 我已经想通了。可以在这里看到:ats.ucla.edu/stat/r/faq/saving.htm
    • 太好了,很高兴它很有用。该链接看起来很全面(不要忘记您的 dev.off() )另外忘记了,如果您想使用标签(如您的示例图像中所示),您可以将 rowID 替换为 mylist[[i]$rowID &lt;- paste0("stat", 1:nrow(mylist[[i]]))
    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多