使用R在矩阵中平均象限 [英] Averaging quadrants in a matrix using R
问题描述
我正在尝试对24X16 matrix
中4个元素的象限进行平均.矩阵分为三等分(3-8X16s)
,并且在每个部分中都有重复的象限,分别被指定为中上和下(这些是实验条件).
I'm trying to average a quadrant of 4 elements in a 24X16 matrix
. The matrix is separated in to thirds (3-8X16s)
and has repeating quadrants in each section, that are designated lo mid and high (these are experimental conditions).
我的问题有两个:
1)我试图取消列出4的选择以计算均值,然后对下一个4的选择重复该过程,直到我完成第3个选择为止.将所有这些值并置为名称lo_siRNA_average会返回"unexpected symbol"
错误:
My question is two fold:
1) I am attempting to unlist this selection of 4 to calculate the mean, then repeat the process on the next selection of 4 until I'm finished with that third. Concatenating all these values under a name lo_siRNA_average returns an "unexpected symbol"
error:
lo_siRNA_average <- c(mean(unlist(expData[1:2,1:2])), mean(unlist(expData[3:4,1:2])), mean(unlist(expData[5:6,1:2])), mean(unlist(expData[7:8,1:2])), mean(unlist(expData[9:10,1:2])), mean(unlist(expData[11:12,1:2])), mean(unlist(expData[13:14,1:2])), mean(unlist(expData[15:16,1:2])) mean(unlist(expData[1:2,3:4])), mean(unlist(expData[3:4,3:4])), mean(unlist(expData[5:6,3:4])), mean(unlist(expData[7:8,3:4])), mean(unlist(expData[9:10,3:4])), mean(unlist(expData[11:12,3:4])), mean(unlist(expData[13:14,3:4])), mean(unlist(expData[15:16,3:4])), mean(unlist(expData[1:2,5:6])), mean(unlist(expData[3:4,5:6])), mean(unlist(expData[5:6,5:6])), mean(unlist(expData[7:8,5:6])), mean(unlist(expData[9:10,5:6])), mean(unlist(expData[11:12,5:6])), mean(unlist(expData[13:14,5:6])), mean(unlist(expData[15:16,5:6])), mean(unlist(expData[1:2,7:8])), mean(unlist(expData[3:4,7:8])), mean(unlist(expData[5:6,7:8])), mean(unlist(expData[7:8,7:8])), mean(unlist(expData[9:10,7:8])), mean(unlist(expData[11:12,7:8])), mean(unlist(expData[13:14,7:8])), mean(unlist(expData[15:16,7:8])))
Error: unexpected symbol in "(expData[1:2,1:2])), mean(unlist(expData[3:4,1:2])), mean(unlist(expData[5:6,1:2])), mean(unlist(expData[7:8,1:2])), mean(unlist(expData[9:10,1:2])), mean(unlist(expData[11:12,1:2])), mean(unl"
2)有没有办法将矩阵位置自动循环成循环,而不是那么长?
2) Is there way to automate the matrix locations as a loop so its not as long?
推荐答案
如上所述:重塑矩阵并使用apply/aggregate.
As commented above: reshape your matrix and use apply/aggregate.
library(reshape2)
set.seed(1)
expData <- matrix(rnorm(24*16), ncol = 16)
df <- melt(expData)
df$rowInd <- rep(1:8, each = 3)
df$colInd <- rep(1:8, each = 48)
res <- aggregate(value ~ rowInd + colInd, df, mean)
# Check if this is what you want:
aggregate(value ~ rowInd + colInd, df, mean)[1,"value"] == mean(expData[1:3, 1:2])
这篇关于使用R在矩阵中平均象限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!