我注意到,在某些情况下(我仍然是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 }
因此,似乎“;”在某些情况下(此处,在“}”和第二个“战俘”之间,可能是强制性的,而在其他情况下(在“{”和第一个“战俘”之间),不是强制性的吗?
最佳答案
回车(或换行)分隔命令。 (我之前说过,它会分隔“表达式”,但在R中,这并不是正确的术语。R感中的“表达式”实际上是用逗号分隔的。)如果在一行中插入分号,则会得到相同的结果影响。尽管存在不必要的事实,但此代码仍可以作为该事实的示例:
make.power <- function(n) { pow <- function(x) { x^n }; pow }
我很失望,在我查看的任何
help()
文件中都找不到这样的陈述。我认为通过键入?Syntax
我应该已经找到了相关的东西。我能想到的最好的是help(parse)
页面,即使在那里,仅通过查看示例,您就可以推断出这一点。我想您应该已经读过“R简介”,因此我敢肯定必须对它进行描述。是的,在第1.8节中。回答您的问题2:在将内部函数(...)的“return函数,但是在这种情况下,最紧凑的代码是:
make.power <- function(n) { function(x) { x^n } }
关于r - R控制台:单行指令与多行指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14308339/