Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么for循环在某些位置(在R中)返回NA向量?_R - Fatal编程技术网

为什么for循环在某些位置(在R中)返回NA向量?

为什么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

在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开始,所以请保持简单,如果我在思考过程中出错,请纠正我!谢谢

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