我正在寻找填充这个空向量:
empty_vec <- rep("", times=length(number_vec))
此循环中的连续数字:
for (numbers in number_vec) {
sqrtn <- sqrt(numbers)
empty_vec[numbers] <- sqrtn
}
其中
numbers_vec
是 c(16:49)
。
但是,当我这样做时,我的
empty_vec
中的第一个位置(1-15)没有被填充?
您可以通过两种方式解决这个问题:
首先,您可以创建一个计数器,它将记录您处于循环的哪一步,并将其用作
empty_vect
的索引,如下所示:
empty_vec <- rep("", times=length(number_vec))
counter <- 0
for (numbers in number_vec) {
counter <- counter + 1
sqrtn <- sqrt(numbers)
empty_vec[counter] <- sqrtn
}
或者您可以创建一个空向量并连接每个新值,如下所示:
empty_vec <- c()
for (numbers in number_vec) {
sqrtn <- sqrt(numbers)
empty_vec <- c(empty_vec, sqrtn)
}
你这样做的方式,就像你开始在第 16 个位置填充你的向量,这就是你出错的方式。
首先你需要了解 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
}