R '的目的是什么;空';在处理循环中?

R '的目的是什么;空';在处理循环中?,r,R,我是通过上面的循环来的,对于初学者来说,这很简单。为了进一步了解r,第二行的确切目的是什么?在我的研究中,我认为这与重置向量有关。如果有人能详细说明,我将不胜感激 sqr = seq(1, 100, by=2) sqr.squared = NULL for (n in 1:50) { sqr.squared[n] = sqr[n]^2 } 练习会更好。而且速度也更快。这样,就不会在循环中构建新向量。但是由于^是矢量化的,您也可以简单地执行以下操作 sqr.squared <- vec

我是通过上面的循环来的,对于初学者来说,这很简单。为了进一步了解r,第二行的确切目的是什么?在我的研究中,我认为这与重置向量有关。如果有人能详细说明,我将不胜感激

sqr = seq(1, 100, by=2)
sqr.squared = NULL
for (n in 1:50)
{
  sqr.squared[n] = sqr[n]^2
}
练习会更好。而且速度也更快。这样,就不会在循环中构建新向量。但是由于
^
是矢量化的,您也可以简单地执行以下操作

sqr.squared <- vector("integer", 50)

另一种思考方法是记住r中的所有内容都是函数调用,函数需要输入(通常)


假设您计算了
y
,并希望将该值存储在某个位置。您可以执行
x第一个答案是正确的,当您为变量指定空值时,目的是初始化向量。在许多情况下,当您检查数字或使用不同类型的变量时,需要将此数组、矩阵等设置为NULL


例如,在您想要创建某种类型的元素时,在某些情况下,您需要在其中放置一些内容。这就是使用NULL的目的。此外,有时您需要NA而不是NULL。

抱歉,复制速度仍然很慢。我不知道这是什么意思。什么东西复制起来太慢了?需要花时间去理解一切。需要花时间去理解一切。我的第一个要点是,代码不仅仅是赋值,即a=sqr[n]^2。但实际上,sqr.squared[n]=sqr[n]^2,这是子设置。因此,这就要求分设置。。(这是我需要掌握的第一件事)。然后是替换代码sqr.squared
sqr.squared <- vector("integer", 50)
sqr[1:50] ^ 2 
y <- 1

x[2] <- y
# Error in x[2] <- y : object 'x' not found
`[<-`(x, 2, y)
# Error: object 'x' not found
(x <- numeric(5))
# [1] 0 0 0 0 0

# and now use the function
`[<-`(x, 2, y)
# [1] 0 1 0 0 0