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")