if (page == contact) {
return contact form
} elseif (page == about) {
return about me page
} else {
return the regular page format.
}
我来到了上面的循环,对于初学者来说这很简单。为了进一步了解第二行的确切目的是什么?对于我的研究,我收集它与重置矢量有关。如果有人可以详细说明,我会非常感激。
答案 0 :(得分:8)
sqr.squared <- NULL
是在通过循环运行之前初始化空向量sqr.squared
的众多方法之一。通常,当已知结果向量的长度时,分配向量的长度要好得多。所以在这里,
sqr.squared <- vector("integer", 50)
会更好的练习。而且速度也快。这样您就不会在循环中构建新向量。但是由于^
是矢量化的,你也可以简单地做
sqr[1:50] ^ 2
并将循环放在一起。
答案 1 :(得分:3)
另一种思考方式是记住r中的所有内容都是函数调用,函数需要输入(通常)。
说你计算了y
并希望将该值存储在某处。您可以在不初始化x <- y
对象的情况下执行x
(r为您执行此操作,与其他语言不同,例如c),但是您要将其存储在x中的特定位置。
请注意,<-
(或示例中的=
)是一个函数
y <- 1
x[2] <- y
# Error in x[2] <- y : object 'x' not found
这是一个与<-
不同的功能。由于您希望将y
放在x[2]
,因此需要[<-
`[<-`(x, 2, y)
# Error: object 'x' not found
但这仍然无效,因为我们需要对象x
才能使用此功能,因此请将x
初始化为某些内容。
(x <- numeric(5))
# [1] 0 0 0 0 0
# and now use the function
`[<-`(x, 2, y)
# [1] 0 1 0 0 0
这种预修复符号对于计算机来说更容易解析(例如+ 1 1
)但对人类来说更难(至少我),所以我们更喜欢 修复符号(例如,1 + 1
)。 R使这些函数更容易使用x[2] <- y
而不是我上面的方法。
答案 2 :(得分:2)
第一个答案是正确的,当您为变量分配NULL值时,目的是初始化一个向量。在许多情况下,当您正在检查数字或使用不同类型的变量时,您需要将此数组,矩阵等设置为NULL。
例如,在您想要创建某种类型的元素时,在某些情况下,您需要在其中放置一些内容。这是使用NULL的目的。此外,有时您需要NA而不是NULL。