【问题标题】:R, iterating over the row vectors of a matrixR,遍历矩阵的行向量
【发布时间】:2013-04-07 00:02:17
【问题描述】:

我有一些向量vect,我想遍历矩阵的行向量v并计算:

cov(v, vect)

我试过了:

for(vect in mat2)     #where mat2 is a 215 by 31 matrix

但是,每个向量似乎都是一个值为 1 的标量。

  1. 如何迭代矩阵的行向量?
  2. 为了使这更好,因为我有兴趣计算 cov(v, vect) 的总和,其中 v 是行向量,我如何使用高阶函数 left-foldright-fold

【问题讨论】:

  • 你真的读过?for吗?您需要考虑一下您实际在做什么。

标签: r vector matrix fold higher-order-functions


【解决方案1】:

如果我理解 vect 是一个独立于 mat2 的向量:

apply(mat2, 1, function(v) cov(v, vect))

apply 函数允许您在行(如果第二个参数为 1)或列(如果 2)或更高维度(如果 >2)上应用任意函数。它也比使用循环快得多。

【讨论】:

    【解决方案2】:

    您在寻找apply 吗?

    apply(mat2, 1, function(v)cov(v,vect))
    

    【讨论】:

    • 可能我在找cov(v, vect)的总和
    • 不,vect 是一些任意向量(用于监督),mat2 中的每个向量 vvect 具有相同的 31 个维度
    • 我想为mat2 中的每一行向量v 求和covariance(v, vect)。我认为您可能的意思是这是协方差矩阵,但我认为这更像是相应协方差的向量或相应协方差的列表。
    • 也许我需要先建立这个协方差向量?
    • 当然,两个向量的cov 不会返回一个矩阵。这就是你的意思:sum(apply(mat2, 1, function(v)cov(v,vect)))
    猜你喜欢
    • 2016-02-12
    • 2011-05-18
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多