【问题标题】:r for loop only returns last value or NULLr for 循环仅返回最后一个值或 NULL
【发布时间】:2018-02-06 21:05:17
【问题描述】:
for(i in 1:ncol(cov_portfolio)){
    k<-cov_portfolio[i,i]}
k

我的 cov_portfolio 是 12:12 矩阵,每当我运行此代码以查看每个匹配的列和行时,例如 [1,1] 和 [10,10],它只显示最后一个值。 有没有其他方法可以做到?

谢谢

【问题讨论】:

  • 首先,这个循环/代码不起作用(你有错字);其次,要跳过循环,您可以使用函数diag();第三,如果您的问题是 - 如何从 for 循环返回结果,那么它与许多 questions that there are on SO
  • Store values in For Loop的可能重复
  • k=numeric(12);for(i in 1:ncol(cov_portfolio)) k[i]&lt;-cov_portfolio[i,i];k

标签: r for-loop matrix


【解决方案1】:

与迈克尔的回答非常非常相似:

    k <- numeric(12) # create a vector of length 12

    for(i in 1:ncol(cov_portfolio))
    {
        k <- c(k, cov_portfolio[i, i]) # add onto k vector
    }

    k # view vector to compare results

Michael 是对的 - 您一遍又一遍地重新分配值 k,所以您当然只会看到一个值。

【讨论】:

    【解决方案2】:

    现在每个循环,您的代码都会在每个循环中重写 K 个。如果您想查看每个答案,您可以执行以下操作:

      k <- c()
        for(i in 1:ncol(cov_portfolio)){
            k <- c(k,cov_portfolio[i,i])}
       k 
    

    【讨论】:

    • 如果您要建议这种方法(而不仅仅是使用diag()),至少要预先分配k 到合适的长度。
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2018-06-05
    相关资源
    最近更新 更多