为什么for循环在某些位置(在R中)返回NA向量?
在youtube教程之后,我创建了一个向量x[-3,6,2,5,9]。 然后我用函数'numeric(5)'创建一个长度为5的空变量 我想用for循环将向量x的平方存储在'Storage2'中。 当我执行for循环并更新变量时,它会返回一个非常奇怪的结果: [1] 94092536NA 81 我可以看到x中的所有数字都是平方的,但是顺序是随机的,而且超过了5 还有,为什么会有NAs??如果是因为x的最后一个数字是9(所以这个数字定义了长度??),没有7和8的位置,我会理解,但是我也缺少位置1,3和4,所以应该有更多的NAs 我只是从R开始,所以请保持简单,如果我在思考过程中出错,请纠正我!谢谢为什么for循环在某些位置(在R中)返回NA向量?,r,R,在youtube教程之后,我创建了一个向量x[-3,6,2,5,9]。 然后我用函数'numeric(5)'创建一个长度为5的空变量 我想用for循环将向量x的平方存储在'Storage2'中。 当我执行for循环并更新变量时,它会返回一个非常奇怪的结果: [1] 94092536NA 81 我可以看到x中的所有数字都是平方的,但是顺序是随机的,而且超过了5 还有,为什么会有NAs??如果是因为x的最后一个数字是9(所以这个数字定义了长度??),没有7和8的位置,我会理解,但是我也缺少位置1,3
x <- c(-3,6,2,5,9)
Storage2 <- numeric(5)
for(i in x){
Storage2[i] <- i^2
}
Storage2
# [1] 9 4 0 9 25 36 NA NA 81
x您在x
的元素上循环,而不是像预期的那样在位置上循环。您需要这样更改循环:
for(i in 1:length(x)) {
Storage2[i] <- x[i]^2
}
Storage2
# [1] 9 36 4 25 81
是的,很管用,谢谢!(我知道我能做得很简单,但我只是在尝试循环)我主要是想理解为什么它会给我这个结果。。。所以你总是要指定位置,对吗?(i in 1:vector)@Sergi对(i in x){print(i^2)}
来说,做很好,但它与Storage2[i]
的索引有关,因为i
s导致c(-3,6,2,5,9)
不像您可能预期的那样出现在x(1,2,3,4,5)
中。
Storage2 <- x^2
Storage2
# [1] 9 36 4 25 81