使用多个数据框的第一行的第一个元素创建箱线图

Posted

技术标签:

【中文标题】使用多个数据框的第一行的第一个元素创建箱线图【英文标题】: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 中的数据帧行。

【问题讨论】:

【参考方案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]]))

以上是关于使用多个数据框的第一行的第一个元素创建箱线图的主要内容,如果未能解决你的问题,请参考以下文章

具有多个类别的箱线图和小提琴图

Ajax发布仅返回多个选择框的第一个值[关闭]

调用数据框的元素

将实际数据覆盖在来自 pandas 数据框的箱线图上

将数据框的第三列放在下一行

使用 R 中的数据框中的重复/分组行制作分组箱线图