我有类似的数据:
N = 100
matr <- matrix(rnorm(3*6*N), N)
matr_T <- array(as.vector(t(matr)), dim=c(6, 3, N))
这是模拟的结果。我的专栏代表我的地区,行表示时间单位,然后3d表示每列/每行的估计参数的模拟集。
我想对这个数据集做几件事。我想做一个函数,让我可以在多面板图中为每个列/行的3d数据(这里为18个直方图)制作一个直方图。但是我也想产生一个mean()
的数组(2d)和另一个sd()
的数组(2d),就像以前的直方图一样(3 * 6的数组)。可以是我可以选择功能的apply()
(hist()
,mean()
,sd()
等)。您能帮我吗?
谢谢!
答案 0 :(得分:1)
现在,它使用远优于lapply
的图并以合理的结构进行绘制。
N = 100
matr <- matrix(rnorm(3*6*N), N)
matr_T <- array(as.vector(t(matr)), dim=c(6, 3, N))
apply(matr_T,1:2,mean)
apply(matr_T,1:2,sd)
library(ggplot2) # for histograms
library(cowplot) # for grid arrangement
# create list to access Dimensions in lapply
dims <- list(row = rep(1:nrow(matr_T),each = ncol(matr_T)),
col = rep(1:ncol(matr_T),times = nrow(matr_T)))
plots <- lapply(seq_along(dims$row),
function(i){
ggplot(data.frame(x = matr_T[dims$row[i],dims$col[i],]),aes(x = x)) +
geom_histogram(bins = 10, col = 'black', fill = 'white') +
theme_minimal() +
labs(title = paste('row:',dims$row[i],'\n','col:',dims$col[i]))
})
plot_grid(plotlist = plots, ncol = 3)