我注意到,在某些情况下(我仍然是 R 的初学者!),多行指令不能“按原样”合并为简单的行指令。举个例子,这是我最近在网上上的一节课:
> make.power <- function(n) {
+ pow <- function(x) {
+ x^n
+ }
+ pow
+ }
是'make.power'函数的定义。然后我可以定义“立方体”或平方函数
> cube <- make.power(3)
> square <- make.power(2)
然后,如果我尝试使用完全相同的语法在一行上定义 make.power :
> make.power <- function(n) { pow <- function(x) { x^n } pow }
这将在“make.power ...”中引发“意外符号”。也就是说,以下单行代码将起作用:
> make.power <- function(n) { pow <- function(x) { x^n }}
而且,当切换到多线时,仍然可以工作!
> make.power <- function(n) {
+ pow <- function(x) {
+ x^n
+ }
+ }
我必须承认我很困惑。我的问题如下:
- 为什么我不能将多行代码合并到单行指令中?
- 在函数的第一个多行定义中,为什么要在函数定义后立即调用'pow'函数,这显然是没有意义的,因为没有调用的相同代码是可以的!
编辑:在#Dwin 回答之后,下面的表达式是真的:
> make.power <- function(n) { pow <- function(x) { x^n }; pow }
完美运行。这个也是:
> make.power <- function(n){; pow <- function(x) {; x^n }; pow }
所以看起来“;” 在某些情况下可能是强制性的(这里,在“}”和第二个“pow”之间,而不是在其他情况下(在“{”和第一个“pow”之间)?