R语言笔记7:functions 您所在的位置:网站首页 r语言中assign函数 R语言笔记7:functions

R语言笔记7:functions

#R语言笔记7:functions| 来源: 网络整理| 查看: 265

上一讲通过三个简单的例子体验了一下如何在R中写函数,下面来详细学习有关R语言中函数的知识。

Functions in R

主要分三个部分来讲解函数:

编写函数所需的基础知识相关语法作用域R语言作用域的规则 编写函数所需的基础知识

R语言通过function()指令来命名和创建函数。首先要给函数赋值,也就是命名,然后在小括号中写入参数,最后再大括号中写入函数要执行的语句,其基本语法是:

f + a^2 + } > f(2) [1] 4

这里定义函数f,有两个参数,但返回值仅仅是a的平方。所以当运行f(2)时,和b无关,所以系统自动跳过,不会报错。

第二个例子:

> f f(45) [1] 45 Error in print(b): argument "b" is missing, with no default

这里同样定义f有两个参数,但返回值是a和b,所以当输入f(45)时,因为第二个位置上缺少b的赋值,所以会报错。这里就是用了惰性求值,即,仅在使用这个参数的时候进行求值,在这之前的程序都是有效的并可以执行,直至运行到出错的部分。

特殊参数...

...参数是一种特殊的参数,表明一些可以传递给另一个函数的参数。常用于当你需要扩展另一个函数,而你又不想复制原函数的整个参数列表时。

如下例,你希望修改plot()函数中的个别参数,而其他参数保持不变,将其应用于一个新定义的函数中myplot():

myplot mean function (x, ...) UseMethod("mean")

还有一种情况下,...参数必须使用:

那就是,当传递到函数的参数数量不能事先确定的时候。

比如paste()函数,他的作用是将一连串字符串连接起来,然后新建一个字符串或向量,所以无法预知参数个数:

> args(paste) function (..., sep = " ", collapse = NULL) NULL

还有cat()函数,它的功能是和paste相似,也是连接字符串。

> args(cat) function (..., file = "", sep = " ", fill = FALSE, labels = NULL, append = FALSE) NULL

使用...函数的一个注意事项:

就是任何出现在...之后的参数列表必须明确的给出名称。而且不能够部分匹配或位置匹配

举例:

> paste("a","b",sep = ":") [1] "a:b"

不能位置匹配或部分匹配:

> paste("a","b",":") [1] "a b :" > paste("a","b",se = ":") [1] "a b :"

参考资料: 1. 视频课程 R Programming by Johns Hopkins University:https://www.coursera.org/learn/r-programming/home/welcome 2. 讲义 Programming for Data Science :https://bookdown.org/rdpeng/rprogdatascience/R



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有