r - 如何为 R 中的 lapply 创建的每个图添加标题?

标签 r boxplot lapply

我正在尝试添加变量名称(即 x、y 和 z)作为每个箱线图的标题:

   bpdf = data.frame(group=c("A","A","A","B","B","B","C","C","C"),
                   x=c(1,1,2,2,3,3,3,4,4),
                   y=c(7,5,2,9,7,6,3,1,2),
                   z=c(4,5,2,9,8,9,7,6,7))

    par(mfrow=c(1,3))
    lapply(bpdf[-1],function(x){
    y <- sort(tapply(x,bpdf$group,median),decreasing=TRUE)
    boxplot(x~factor(bpdf$group,levels=names(y)), 
            main=paste(colnames(bpdf[-1])))
    }) 

我在main调用中遗漏了一些东西(ht to agstudy以获得先前的帮助)。

最佳答案

当前方法的问题在于,当循环列(data.frame/list items)时,列名称本身会丢失,如

devnull <- lapply(bpdf[-1], print)
# [1] 1 1 2 2 3 3 3 4 4
# [1] 7 5 2 9 7 6 3 1 2
# [1] 4 5 2 9 8 9 7 6 7

因此,您可以循环遍历变量名称,而不是循环遍历列:

par(mfrow = c(1, ncol(bpdf) - 1)

lapply(names(bpdf)[-1], function(var){
  x <- bpdf[[var]]
  y <- sort(tapply(x, bpdf$group, median), decreasing = TRUE)
  boxplot(x ~ factor(bpdf$group,levels=names(y)), main = var)
})

关于r - 如何为 R 中的 lapply 创建的每个图添加标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287788/

相关文章:

r - 计算不包括当前值的平均值

R ggplot2 : boxplots with significance level (more than 2 groups: kruskal. 测试和 wilcox.test 成对)和多个方面

r - 如何拆分 data.frame 列表并将函数应用于一列?

r - lapply 是如何工作的 - lapply dcast?

R:如何计算 1,5*IQR 晶须的值

r - 使用lapply时如何命名列表下的列表?

r - 使用预测包从预测中获取预测点估计和间隔

c++ - RCpp:期待单值错误

r - 具有大量点的 dist 函数

Python并排matplotlib箱线图与颜色