R语言函数详解及实例用法

函数是一组组合在一起以执行特定任务的语句。 R 语言具有大量内置函数,用户可以创建自己的函数。

在R语言中,函数是一个对象,因此R语言解释器能够将控制传递给函数,以及函数完成动作所需的参数。

该函数依次执行其任务并将控制返回到解释器以及可以存储在其他对象中的任何结果。

函数定义

使用关键字函数创建 R 语言的函数。 R 语言的函数定义的基本语法如下

function_name <- function(arg_1, arg_2, ...) {
  Function body
}

函数组件

函数的不同部分 -

  • 函数名称 -这是函数的实际名称。 它作为具有此名称的对象存储在 R 环境中。
  • 参数 -参数是一个占位符。 当函数被调用时,你传递一个值到参数。 参数是可选的; 也就是说,一个函数可能不包含参数。 参数也可以有默认值。
  • 函数体 -函数体包含定义函数的功能的语句集合。
  • 返回值 -函数的返回值是要评估的函数体中的最后一个表达式。

R语言有许多内置函数,可以在程序中直接调用而无需先定义它们。我们还可以创建和使用我们自己的函数,称为用户定义的函数。

内置功能

内置函数的简单示例是 seq(),mean(),max(),sum(x) 和 paste(...) 等。它们由用户编写的程序直接调用。 您可以参考最广泛使用的 R 函数。

# Create a sequence of numbers from 32 to 44.
print(seq(32,44))

# Find mean of numbers from 25 to 82.
print(mean(25:82))

# Find sum of numbers frm 41 to 68.
print(sum(41:68))

当我们执行上面的代码,它产生以下结果 -

[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526

用户定义的函数

我们可以在 R 语言中创建用户定义的函数。它们特定于用户想要的,一旦创建,它们就可以像内置函数一样使用。 下面是一个创建和使用函数的例子。

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
  for(i in 1:a) {
   b <- i^2
   print(b)
  }
}	

调用函数

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
  for(i in 1:a) {
   b <- i^2
   print(b)
  }
}

# Call the function new.function supplying 6 as an argument.
new.function(6)

当我们执行上面的代码,它产生以下结果 -

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36

调用没有参数的函数

# Create a function without an argument.
new.function <- function() {
  for(i in 1:5) {
   print(i^2)
  }
}	

# Call the function without supplying an argument.
new.function()

当我们执行上面的代码,它产生以下结果 -

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

使用参数值调用函数(按位置和名称)

函数调用的参数可以按照函数中定义的顺序提供,也可以以不同的顺序提供,但分配给参数的名称。

# Create a function with arguments.
new.function <- function(a,b,c) {
  result <- a * b + c
  print(result)
}

# Call the function by position of arguments.
new.function(5,3,11)

# Call the function by names of the arguments.
new.function(a = 11, b = 5, c = 3)

当我们执行上面的代码,它产生以下结果 -

[1] 26
[1] 58

使用默认参数调用函数

我们可以在函数定义中定义参数的值,并调用函数而不提供任何参数以获取默认结果。 但是我们也可以通过提供参数的新值来获得非默认结果来调用这样的函数。

# Create a function with arguments.
new.function <- function(a = 3, b = 6) {
  result <- a * b
  print(result)
}

# Call the function without giving any argument.
new.function()

# Call the function with giving new values of the argument.
new.function(9,5)

当我们执行上面的代码,它产生以下结果

[1] 18
[1] 45

功能的延迟计算

对函数的参数进行延迟评估,这意味着它们只有在函数体需要时才进行评估。

# Create a function with arguments.
new.function <- function(a, b) {
  print(a^2)
  print(a)
  print(b)
}

# Evaluate the function without supplying one of the arguments.
new.function(6)

当我们执行上面的代码,它产生以下结果

[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default

到此这篇关于R语言函数详解及实例用法的文章就介绍到这了,更多相关R语言函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言boxplot函数深入讲解

    箱线图简介 箱线图又称箱形图或盒须图,该图是由5个特征值绘制而成的图形. 5个特征值是变量的最大值.最小值.中位数.第1四分位数和第3四分位数. 连接两个分位数画出一个箱子,箱子用中位数分割,把两个极值点与箱子用线条连接,即成箱线图. R中绘制箱线图的函数boxplot (1)基本用法 boxplot(x, ...) (2)公式形式的用法 boxplot(formula, data = NULL, ..., subset, na.action = NULL, drop = FALSE, sep

  • R语言Legend函数深入详解

    legend(x, y = NULL, legend, fill = NULL, col = par("col"), border = "black", lty, lwd, pch, angle = 45, density = NULL, bty = "o", bg = par("bg"), box.lwd = par("lwd"), box.lty = par("lty"), box.

  • R语言 数据表匹配和拼接 merge函数的使用

    R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能. merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all, sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...) x,y:用于合并的两个

  • R语言的xtabs函数实例讲解

    今天在做一个列联表独立性检验的时候,总是无法处理好要求的数据类型,偶然的机会,看到了xtabs()函数,感觉很适合用来做列联表,适合将一列数据转换成列联表. shifou <- c("yes","yes","no","no") xinbie <- c("nan","nv","nan","nv") freq <- c(34,38,2

  • R语言strsplit函数用法深入详解

    1.R语言strsplit用于分割字符串 创建测试数据 > test <- "aa bb cc dd ee ff" ##创建测试数据 > test [1] "aa bb cc dd ee ff" > class(test) ## 测试数据为字符 [1] "character" 2.按照指定分隔符拆分字符串 > a <- strsplit(test,split = " ") ##制动分隔符为空

  • R语言函数详解及实例用法

    函数是一组组合在一起以执行特定任务的语句. R 语言具有大量内置函数,用户可以创建自己的函数. 在R语言中,函数是一个对象,因此R语言解释器能够将控制传递给函数,以及函数完成动作所需的参数. 该函数依次执行其任务并将控制返回到解释器以及可以存储在其他对象中的任何结果. 函数定义 使用关键字函数创建 R 语言的函数. R 语言的函数定义的基本语法如下 function_name <- function(arg_1, arg_2, ...) { Function body } 函数组件 函数的不同部

  • COM组件中调用JavaScript函数详解及实例

    COM组件中调用JavaScript函数详解及实例 要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS)调用A的方法longCalc(),该方法是一个耗时的操作,要求通知IE当前的进度.这就要求使用回调函数,设其名称为scriptCallbackFunc.实现这个技术很简单: 1 .组件方(C++) 组件A 的方法在IDL中定义: [id(2)] HRESULT longCalc([in] DOUBLE v1, [in] DOUBLE v2, [in, optional

  • Kotlin 内联函数详解及实例

    Kotlin 内联函数详解及实例 概述 在说内联函数之前,先说说函数的调用过程. 调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方.这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行.也就是通常说的压栈和出栈.因此,函数调用要有一定的时间和空间方面的开销.那么对于那些函数体代码不是很大,又频繁调用的函数来说,这个时间和空间的消耗会很大. 那怎么解决这个性能消耗问题呢,这个时候

  • SQL Server COALESCE函数详解及实例

    SQL Server COALESCE函数详解 很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用,本文主要讲解其中的一些基本使用:  首先看看联机丛书的简要定义: 返回其参数中第一个非空表达式语法: COALESCE ( expression [ ,...n ] ) 如果所有参数均为 NULL,则 COALESCE 返回 NULL.至少应有一个 Null 值为 NULL

  • python 迭代器和iter()函数详解及实例

    python中迭代器和iter()函数 迭代器为类序列对象提供了一个类序列的接口.python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象.迭代器用起来很灵巧,你可以迭代不是序列但表现处序列行为的对象,例如字典的键.一个文件的行,等等.迭代器的作用如下: •提供了刻扩展的迭代器接口: •对列表迭代带来了性能上的增强: •在字典迭代中性能提升: •创建真正的迭代接口,而不是原来的随即对象访问: •与所有已经存在的用户定义的类以及扩展得模拟序列和映射的对象向后兼容:

  • C语言链表详解及代码分析

    C语言链表详解附实例 什么是链表 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.链表和数组比较,不用事先确定存储空间,而是根据需要开辟内存单元. 下图1是最简单的一种链表(单向链表)的结构 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 name,性别 sex 和成绩 score 等.另一个域为指针域,存放下一结点的首地址.链表中的每一个结点都是同一种结构类

  • C语言中函数参数的入栈顺序详解及实例

    C语言中函数参数的入栈顺序详解及实例 对技术执着的人,比如说我,往往对一些问题,不仅想做到"知其然",还想做到"知其所以然".C语言可谓博大精深,即使我已经有多年的开发经验,可还是有许多问题不知其所以然.某天某地某人问我,C语言中函数参数的入栈顺序如何?从右至左,我随口回答.为什么是从右至左呢?我终究没有给出合理的解释.于是,只好做了个作业,于是有了这篇小博文. #include void foo(int x, int y, int z) { printf(&quo

  • R语言学习笔记之lm函数详解

    在使用lm函数做一元线性回归时,发现lm(y~x+1)和lm(y~x)的结果是一致的,一直没找到两者之间的区别,经过大神们的讨论和测试,才发现其中的差别,测试如下: ------------------------------------------------------------- ------------------------------------------------------------- 结果可以发现,两者的结果是一样的,并无区别,但是若改为lm(y~x-1)就能看出+1和

  • R语言行筛选的方法之filter函数详解

    目录 1. 数据 2. 生成ID列和类型 3. 提取effect大于0.1的行 4. 提取加性效应,且effect小于0的行 5. 根据部分行名删选 6. 固定字符特征进行行筛选 总结 下面介绍一下R语言中行筛选的方法,主要介绍filter函数 1. 数据 这里,使用asreml分析中的BLUP值为例,相关的模型为: m1 = asreml(Phen ~ G , random = ~ vm(Progeny,ainv) + vm(Dam,ainv) + vm(Progeny,dinv), work

  • C语言头文件<string.h>函数详解

    目录 1. strlen —— 求字符串长度 1.1 strlen 的声明与用处 1.2 strlen 的用法 1.3 strlen 的模拟实现 2. strcpy —— 字符串拷贝 2.1 strcpy 的声明与用处 2.2 strcpy 的用法 2.3 strcpy 的模拟实现 3. strcmp —— 字符串比较 3.1 strcmp 的声明与用处 3.2 strcmp 的用法 3.3 strcmp 的模拟实现 4. strcat —— 字符串追加 4.1 strcat 的声明与用处 4.

随机推荐