【问题标题】:Populating a vector with a for loop使用 for 循环填充向量
【发布时间】:2017-03-23 19:00:45
【问题描述】:

我试图在 for 循环的每次迭代中用结果 pred 填充向量 pred_pos。但是,我的 pred_pos 向量永远不会被填充。 my_vec 对象是一个大型字符向量列表,我认为不需要针对此问题对其进行复制,因为它很可能是基本索引错误。我只需要知道如何从这个 for 循环中填充一个向量。我似乎无法找到解决方案。

pred_pos <- vector("numeric" , 2)


for(i in my_vec) { 
        for(r in pred_pos) {
        inserts <- sapply(i, function(n) { n <- cond_probs_neg[n] } ) 
        pred <- sum(unlist(inserts) , na.rm = T) * apriori_neg
        pred_pos[r] <- pred
        } 
      }

【问题讨论】:

    标签: r


    【解决方案1】:

    假设你的代码的其余部分可以工作,则无需明确声明:

    pred_pos &lt;- vector("numeric" , 2)

    这会创建一个长度为 2 的数字向量。你应该会写:

    pred_pos &lt;- vector()

    现在,当您希望附加到向量时,您可以简单地使用:

    vector[length(vector)+1] &lt;- someData

    我相信你的代码在调整后应该可以工作:

    pred_pos <- vector()
    
    for(i in my_vec) { 
            inserts <- sapply(i, function(n) { n <- cond_probs_neg[n] } ) 
            pred <- sum(unlist(inserts) , na.rm = T) * apriori_neg
            pred_pos[length(pred_pos)+1] <- pred
     }
    

    【讨论】:

    • 谢谢。如果我完全省略 for(r in pred_pos) 循环并只使用第一个 for 循环,它实际上工作得很好。
    • 是的。也很好地使用索引计数器来填充向量。再次感谢。
    猜你喜欢
    • 2018-09-14
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多