我试图在24X16 matrix
中平均4个元素的象限。矩阵被分成三等(3-8X16s)
并且在每个部分中具有重复的象限,其被指定为中间和高(这些是实验条件)。
我的问题有两个:
1)我试图取消这个4的选择以计算平均值,然后在下一个选择4上重复该过程,直到我完成第三个。以名称lo_siRNA_average连接所有这些值会返回"unexpected symbol"
错误:
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)有没有办法将矩阵位置自动化为循环所以它不会那么长?
答案 0 :(得分:1)
如上所述:重塑您的矩阵并使用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])