使用R在矩阵中平均象限 [英] Averaging quadrants in a matrix using R

查看:75
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆