Сделайте функцию на трехмерной матрице, чтобы получить средние и гистограммы - PullRequest
0 голосов
/ 14 июня 2019

У меня есть такие данные:

N = 100
matr <- matrix(rnorm(3*6*N), N)
matr_T <- array(as.vector(t(matr)), dim=c(6, 3, N))

Это результат симуляции.Мои столбцы представляют мои территории, строки - единицу времени, а 3d - набор имитаций оценочных параметров для каждого столбца / строки.

Я хотел бы сделать несколько вещей с этим набором данных.Я хотел бы сделать функцию, которая позволила бы мне сделать гистограмму на трехмерных данных для каждого столбца / строки (здесь 18 гистограмм) на многоканальной фигуре.Но я также хотел бы создать массив (2d) с mean() и другой массив (2d) с sd(), как для предыдущих гистограмм (массив 3 * 6).Может быть apply(), в котором я мог бы выбрать функцию (hist(), mean(), sd() и т. Д.). Можете ли вы мне помочь, пожалуйста?

Спасибо!

1 Ответ

1 голос
/ 14 июня 2019

РЕДАКТИРОВАТЬ №.2

Теперь он использует намного превосходящий 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)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...