我有两个这样的列表
head(x)
[[1]] 30.0 28.9 28.9
[[2]] 29.4 29.4 29.4
[[3]] 27.2 28.3
[[4]] 27.8 30.0 27.2 28.3 28.9 28.3 27.8
head(y)
[[1]] 28.9 28.9
[[2]] 29.4
[[3]] 28.9 30.0 27.2 28.3
[[4]] 27.2 28.3 28.9 28.3 27.8
x和y具有相同的长度,但是对于每个列表条目([[1]],[[2]]]等,元素的数量可以变化。
我可以分别制作x和y的箱形图
boxplot(x)
boxplot(y)
但我怎么能做他们差异的盒子图(对于每个列表条目,我有一个平均值,sd等等,因为手段的差异)?
非常感谢,
答案 0 :(得分:1)
所以如果您的数据看起来像这样
x<-list(
c(30.0, 28.9, 28.9 ),
c(29.4, 29.4, 29.4 ),
c(27.2, 28.3 ),
c(27.8, 30.0, 27.2, 28.3, 28.9, 28.3, 27.8 )
)
y<-list(
c(28.9, 28.9 ),
c(29.4 ),
c(28.9, 30.0, 27.2, 28.3 ),
c(27.2, 28.3, 28.9, 28.3, 27.8 )
)
然后你可以使用
制作一组集合之间的差异boxplot(mapply(function(x,y) {mean(x)-mean(y)}, x, y))
当然这只有一个箱图,因为4组中的每一组只有一个平均值差异。观察样品中平均值的差异是单个值。它本身没有平均值或标准偏差。这是因为您无法计算列表中的成对差异,因为每个集合中的数字向量不同。