在R中创建箱线图时,是否有方法迭代 Dataframe 列表?

dced5bon  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(72)

我在R中创建了这个函数,以便基于多个数据框中的同一列创建箱形图,存储在列表(dfs)中:

plotting <- function(dfs, name="pdf_name", column, names, colours, title="No_title"){
  pdf(name)
  boxplot(dfs[[1]][[column]], dfs[[2]][[column]], dfs[[3]][[column]], names=names, col=colours)
  title(title)
  boxplot(dfs[[1]][[column]], dfs[[2]][[column]], dfs[[3]][[column]], col=colours, names=names, outline=F) #without outliers
  title(paste(title, "without outliers"))
  dev.off()
}

我想缩短这段代码,并想知道是否有一种方法可以遍历我的 Dataframe 列表中的所有 Dataframe ,例如:dfs1:3

2nc8po8w

2nc8po8w1#

下面是一个使用diamonds数据框的示例,只关注与您的问题相关的代码元素。
首先,创建一些测试数据。

# Create some test data
dfList <- diamonds %>% group_by(color) %>% group_split()

将数据框列表合并为单个长数据框

testData <- dfList %>% bind_rows(.id="Source")

重写函数

plotting <- function(d, colName, groupName, title="Default title") {
  boxplot(as.formula(paste0(colName, " ~ ", groupName)), data=d)
  title(title)
  boxplot(as.formula(paste0(colName, " ~ ", groupName)), data=d, outline=FALSE)
  title(paste0(title, ": no outliers"))
}

使用函数

plotting(testData, "depth", "Source")

它给出了两个我认为符合要求形式的图。
请阅读R问题页面顶部的建议和我之前提供的链接,学习如何写一个好的问题,并提供一个最小的可重复的例子。
[The diamonds Dataframe 是ggplot2数据包的一部分。]

相关问题