在YouTube教程之后,我创建了一个向量x [-3,6,2,5,9]。 然后我用函数'numeric(5)'创建一个长度为5的空变量
我想通过for循环将向量x的平方存储在“ Storage2”中。 当我执行for循环并更新变量时,它返回一个非常奇怪的东西: [1] 9 4 0 9 25 36 NA NA 81
我可以看到x中的所有数字都是平方的,但是顺序是如此随机,并且有5个以上。
此外,为什么会有NA?如果是因为x的最后一个数字是9(所以这个数字定义了长度?),并且我没有理解7和8的位置,但是我也缺少了位置1、3和4,因此应该是更多的NA ...
我只是从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
答案 0 :(得分:1)
您正在遍历x
的元素,而不是预期的位置。您需要像这样更改循环:
for(i in 1:length(x)) {
Storage2[i] <- x[i]^2
}
Storage2
# [1] 9 36 4 25 81
(注意: 1:length(x)
也可以表示为seq_along(x)
,正如 @NelsonGon 在评论中指出的那样,并且可能更快。)
但是,R是向量化语言,因此您可以轻松地做到这一点:
Storage2 <- x^2
Storage2
# [1] 9 36 4 25 81