R编程的艺术:我还能在哪里找到这些信息?

har*_*hal 9 r

我看到了"编程的艺术"一书的编辑评论,并发现了这一点

R编程的艺术带您了解R的软件开发,从基本类型和数据结构到高级主题,如闭包,递归和匿名函数

我立即对匿名函数的想法着迷,这是我在Python中以lambda函数的形式遇到的但是无法在R语言中建立连接.

我在R手册中搜索并找到了这个

通常将函数分配给符号,但它们不需要.调用函数返回的值是一个函数.如果没有给出名称,则将其称为匿名函数.匿名函数最常用作其他函数的参数,例如apply family或outer.

对于像我这样不太长时间的程序员而言,这些事情以一种非常有趣的方式"古怪".哪里可以找到更多这些R(无需购买书籍)?

感谢您分享您的建议

G. *_*eck 17

函数在R中没有名称.是否碰巧将函数放入变量中不是函数本身的属性,因此存在两种函数:匿名函数和命名函数.我们能做的最好的事情是同意调用一个从未被赋予匿名变量的函数.

一个函数f可以被视为一个由其正式参数组成的三元组,它的主体和它的环境可以单独通过formals(f),body(f)environment(f).这个名字不是那个三重奏的任何一部分.请参阅语言定义手册中函数对象部分.

请注意,如果我们想要一个函数来调用自身,那么我们可以使用它Recall来避免知道函数是否被赋值给变量.另一种方法是函数体必须知道函数已分配给特定变量以及该变量的名称是什么.也就是说,如果将函数分配给变量f,那么主体可以参考f以便调用自身. Recall仅限于自我调用功能.如果我们有两个相互调用的函数,则对应的Recall函数不存在 - 每个函数必须命名另一个函数,这意味着必须将每个函数分配给一个变量,并且每个函数体必须知道另一个函数的变量名称被分配到.


NPE*_*NPE 5

关于R中的匿名函数没有太多可说的.与Python不同,lambda函数需要特殊的语法,在R中,匿名函数只是一个没有名称的函数.

例如:

function(x,y) { x+y }
Run Code Online (Sandbox Code Playgroud)

而正常的,命名的功能将是

add <- function(x,y) { x+y }
Run Code Online (Sandbox Code Playgroud)

函数是第一类对象,因此您可以将它们(无论它们是否是匿名的)作为其他函数的参数传递.将其他函数作为参数的函数示例包括apply,lapplysapply.