R语言学习笔记6
R语言教程-R编程3
函数部分
递归调用
在函数内调用自己叫做递归调用。 递归调用可以使得许多程序变得简单, 但是往往导致程序效率很低, 需谨慎使用。
R中在递归调用时, 最好用 Recall 代表调用自身, 这样保证函数即使被改名(在R中函数是一个对象, 改名后仍然有效)递归调用仍指向原来定义。
fib <- function(n){ |
向量化
自定义的函数,如果其中的计算都是向量化的, 那么函数自动地可以接受向量作为输入,结果输出向量。
f <- function(x){ |
分段函数
# 一元函数版本,不能处理向量输入 |
改写1:
g1 <- function(x){ |
改写2:
gv <- function(x){ |
改写3:
g3 <- function(x){ |
函数Vectorize可以将g改写2那样的操作自动化。
g <- function(x){ |
还可以使用purrr::map()或基本R的lapply()等泛函实现对各个元素的函数变换。后面将会涉及到。
无名函数
R允许使用没有函数名的函数对象, lapply类的函数经常使用无名的函数对象作为输入。
# 第三个参数FUN.VALUE用以指明返回值的形式,可以看作返回值的模板(0.0)。 |
iris是R中的一个例子数据框,有150个观测, 前4个变量是数值型的, 最后一个变量Species是有三个水平的因子。 这个语句对前4列分别计算极差。
lapply这样的函数称为“泛函”。后面会有相关内容。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 衷深学习!
评论