我想知道是否有可能使用apply函数产生一组类似于此嵌套循环组合所产生的箱线图。
可能没有/没有必要,但我认为应该有可能,但我只是不知道如何做。
我需要能够对此进行绘图,以查看相对于一个变量(mtcars$mpg
)的100个因子如何进行比较
head(mtcars)
for (i in 8:11) {
for (j in 8:11) {
if (i != j) {
title = paste(names(mtcars)[i], names(mtcars)[j],
sep = "/")
p <- ggplot(mtcars, aes(interaction(mtcars[,i], mtcars[, j]), mpg, fill = factor(mtcars[,i]))) + geom_boxplot(alpha = I(0.7))
p <- p + ggtitle(title) + scale_fill_hue()
} else {
title = paste(names(mtcars)[i])
p <- ggplot(mtcars, aes(factor(mtcars[,i]), mpg, fill = factor(mtcars[, i]))) + geom_boxplot(alpha = I(0.7))
p <- p + ggtitle(title) + scale_fill_hue()
}
print(p)
}
}
最佳答案
将if块放入函数中:
plotGG <- function(i,j)
{
if (i != j) { ... } else{ ... }
}
然后调用它:
mapply(plotGG,8:11,8:11)
而且有效。
由于
ggplot
的范围问题,您的代码无法使用。但是您可以在此处查看解决方案:Local Variables Within aes
编辑:
您可以根据需要完成包装:
multiPlotGG <- function(l1,l2) {
mapply(plotGG,rep(l1,each = length(l2)),rep(l2,length(l1)))
}
multiPlotGG(8:11,8:11)
关于r - 通过应用功能生成多个ggplot箱图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28489184/