我注意到,在某些情况下(我仍然是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/

    10-12 22:33