1

我正在为一些非常简单的事情而苦苦挣扎。我试图找到矩阵子集的平均值。例如,我想找到矩阵中每行最后 196 个元素的平均值。

我的代码如下所示:

for (i in 1:length(ratios))  
{  
    mean(ratios[length(ratios[,1])-196:length(ratios[,1]),i])  
} 

任何帮助,将不胜感激!

4

2 回答 2

2

这是一种更直接的方法

>rowMeans(tail(ratios, 196))

tail(ratios, 196)返回 的每行的最后 196 个元素ratios,并rowMeans计算每行的平均值。

在您的 axample 中,您正在采用 col 手段,而不是 row meas,因此请尝试:

>colMeans(tail(ratios,10))

这是一个例子

> ratios <- iris[, sapply(iris, is.numeric)]
> Means <- numeric(ncol(ratios))

> for (i in 1:length(ratios))
  {
    Means[i] <- (mean(ratios[(length(ratios[,1])-10):length(ratios[,1]),i]))
 }

> COLMeans <- colMeans(tail(ratios,10))

> Means  ## Using `for` loop
[1] 6.490909 3.036364 5.336364 2.163636

> COLMeans # using `tail` and `colMeans`
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
        6.45         3.03         5.33         2.17 
于 2013-10-08T08:29:45.723 回答
0

我实际上刚刚解决了它。出于某种原因,您需要在比率矩阵的行部分周围插入括号,如下所示:

for (i in 1:length(ratios)){  
  mean(ratios[(length(ratios[,1])-196):length(ratios[,1]),i])  
}

希望这可以帮助任何有类似问题的人

于 2013-10-08T08:07:08.457 回答