R 需要一种从二维矩阵列表中绘制均值和ses的简短方法吗
这设置了我的数据框R 需要一种从二维矩阵列表中绘制均值和ses的简短方法吗,r,R,这设置了我的数据框 means<- list() means[[1]] <- matrix(c(5,4,6,7,8,8,2,3,4), nrow=3, ncol=3) means[[2]] <- matrix(c(11,7,5,7,8,8,4,3,10), nrow=3, ncol=3) ses <- list ( ) ses[[1]] <- matrix(c(0.5,0.4,0.6,0.7,0.8,0.8,0.2,0.3,0.4), nrow=3, ncol=3)
means<- list()
means[[1]] <- matrix(c(5,4,6,7,8,8,2,3,4), nrow=3, ncol=3)
means[[2]] <- matrix(c(11,7,5,7,8,8,4,3,10), nrow=3, ncol=3)
ses <- list ( )
ses[[1]] <- matrix(c(0.5,0.4,0.6,0.7,0.8,0.8,0.2,0.3,0.4), nrow=3, ncol=3)
ses[[2]] <- matrix(c(0.11,0.7,0.5,0.7,0.8,0.8,0.4,0.3,0.10),nrow=3, ncol=3)
names(means)<- c("nameone", "nametwo")
colnames(means[[1]])<- c("1", "2", "3")
colnames(means[[2]])<- c("1", "2", "3")
rownames(means[[1]])<- c("a", "b", "c")
rownames(means[[2]])<- c("a", "b", "c")
的意思是很难准确地说出您想要的是什么,但是您可以通过转换为data.frame
s并使用ggplot2来避免嵌套循环
在进行转换之前,我将确保表示
和ses
具有相同的名称:
ses <- Map(function(m, s) {
dimnames(s) <- dimnames(m)
return(s)
}, means, ses)
ses <- Map(function(m, s) {
dimnames(s) <- dimnames(m)
return(s)
}, means, ses)
library(ggplot2)
library(reshape2)
library(plyr)
means.df <- melt(means, value.name = "mean")
ses.df <- melt(ses, value.name = "se")
plot.df <- join(means.df, ses.df)
ggplot(plot.df, aes(factor(Var2), mean)) +
geom_bar(stat = "identity") +
geom_errorbar(aes(ymax = mean + se, ymin = mean - se)) +
facet_grid(L1 ~ Var1) +
xlab("Factor") + ylab("DV")
ggplot(plot.df, aes(factor(Var2), mean, fill = Var1)) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(aes(ymax = mean + se, ymin = mean - se), position = "dodge") +
facet_grid(L1 ~ .) +
xlab("Factor") + ylab("DV")