【问题标题】:Loops and filling empty vectors in RR中的循环和填充空向量
【发布时间】:2018-03-19 19:28:28
【问题描述】:

我正在寻找填充这个空向量:

empty_vec <- rep("", times=length(number_vec))

来自这个循环的序号:

for (numbers in number_vec) {   
  sqrt <- sqrt(numbers)
  empty_vec[numbers] <- sqrt
}

其中numbers_vecc(16:49)

但是,当我这样做时,我的empty_vec 中的第一个位置 (1-15) 没有填充?

【问题讨论】:

    标签: r loops vector


    【解决方案1】:

    您可以通过两种方式解决此问题:

    首先,您可以创建一个计数器,它将记录您所在循环的哪一步,并将其用作empty_vect 的索引,如下所示:

    empty_vec <- rep("", times=length(number_vec))
    counter=0
    for (numbers in number_vec) {   
    counter=counter+1
    sqrt<-sqrt(numbers)
    empty_vec[counter]<-sqrt
    }
    

    或者您可以创建一个空向量并连接每个新值,如下所示:

    empty_vec <- c()
    for (numbers in number_vec) {   
    sqrt<-sqrt(numbers)
    empty_vec <- c(empty_vec,sqrt)
    }
    

    你做的方式,就像你开始在第 16 位填充你的向量,那是你有错误的方式。

    【讨论】:

    • 这是完美的。非常感谢!
    • 我进行了编辑,因为我犯了一个错误。它现在正在工作。
    • 我是双向的,但不知何故,R 将我的空向量视为一个函数? npv_r(current_nr_of_years) = temp 中的错误:找不到函数“npv_r
    • 修正;您的方法 2 有效,但您的方法 1 给出了上述错误
    【解决方案2】:

    首先你需要了解 for 循环的工作原理

    for循环的一般表达是

    for(var in seq) expr
        var =  A syntactical name for a variable
        seq =  An expression evaluating to a vector (including a list and an expression) or to a pairlist or NULL. A factor value will be coerced to a character vector.
    

    请注意,“seq”将是“var”的值。

    在你的例子中,你写了

    for (numbers in number_vec)
    where,
         numbers = Name of the variable
         number_vec = c(16:49)
    

    所以这里,“numbers”的初始值将是“number_vec”的第一个值,即 16。

    在循环的后面步骤中,表达式

    empty_vec[numbers]<-sqrt
    where , 
        empty_vec[numbers] indicate the 16th position of the  empty_vec as initially numbers started with value 16
    

    当您从第 16 位开始时,之前的 15 位仍然是空的。

    您的问题的可能解决方案:

    number_vec = c(16:49)
    empty_vec <- rep("", times=length(number_vec))
    
    for (numbers in seq_along(number_vec)) {   
      sqrt<-sqrt(number_vec[numbers])
      empty_vec[numbers]<-sqrt
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-09
      • 2012-10-28
      • 2016-08-15
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多