我正在尝试在ggplot2上做一个值列表的盒子图,但问题是它不知道如何处理列表,我该怎么办?
例如:
k <- list(c(1,2,3,4,5),c(1,2,3,4),c(1,3,6,8,14),c(1,3,7,8,10,37))
k
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 1 2 3 4
[[3]]
[1] 1 3 6 8 14
[[4]]
[1] 1 3 7 8 10 37
Run Code Online (Sandbox Code Playgroud)
如果我k作为一个参数传递boxplot()它将完美地处理它并产生一个很好的(不太好的...... hehehe)boxplot,其中所有值的范围为Y轴,列表索引(每个元素)为X -轴.
我应该如何使用ggplot2达到完全相同的效果?我认为数据帧或矩阵不是一种选择,因为向量的长度不同.
谢谢
答案是你没有.ggplot2设计用于处理数据帧,特别是长格式数据帧.这意味着您需要将数据作为一个高向量,并具有分组因子:
d <- data.frame(x = unlist(k),
grp = rep(letters[1:length(k)],times = sapply(k,length)))
ggplot(d,aes(x = grp, y = x)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

正如评论中指出的那样,melt实现与手动重塑相同的结果,并且更加简单.我想我想让事情变得困难.