Предположим, у меня был список data.frames (из одинаковых строк и столбцов)
dat1 <- as.data.frame(matrix(rnorm(25), ncol=5))
dat2 <- as.data.frame(matrix(rnorm(25), ncol=5))
dat3 <- as.data.frame(matrix(rnorm(25), ncol=5))
all.dat <- list(dat1=dat1, dat2=dat2, dat3=dat3)
Как я могу вернуть один data.frame, который является средним значением (или суммой и т. Д.) Для каждогоэлемент в data.frames по всему списку (например, среднее значение первой строки и первого столбца из списков 1, 2, 3 и т. д.)?Я пробовал lapply
и ldply
в plyr
, но они возвращают статистику для каждого data.frame в списке.
Редактировать: По какой-то причине это было помечено как домашнее задание.Не то чтобы это было так или иначе, но это не домашнее задание.Я просто не знаю, почему я не могу заставить это работать.Спасибо за понимание!
Edit2: Для дальнейшего пояснения: я могу получить результаты с помощью циклов, но я надеялся, что был способ (более простой и быстрый способ, потому что данные, которые я использую, имеют data.framesэто 12 строк на 100 столбцов и список из 1000+ этих фреймов данных).
z <- matrix(0, nrow(all.dat$dat1), ncol(all.dat$dat1))
for(l in 1:nrow(all.dat$dat1)){
for(m in 1:ncol(all.dat$dat1)){
z[l, m] <- mean(unlist(lapply(all.dat, `[`, i =l, j = m)))
}
}
В результате получается следующее значение:
> z
[,1] [,2] [,3] [,4] [,5]
[1,] -0.64185488 0.06220447 -0.02153806 0.83567173 0.3978507
[2,] -0.27953054 -0.19567085 0.45718399 -0.02823715 0.4932950
[3,] 0.40506666 0.95157856 1.00017954 0.57434125 -0.5969884
[4,] 0.71972821 -0.29190645 0.16257478 -0.08897047 0.9703909
[5,] -0.05570302 0.62045662 0.93427522 -0.55295824 0.7064439
Мне было интересно,был менее неуклюжий и более быстрый способ сделать это.Спасибо!