R 函数:您可以免费获得什么?
介绍
与许多编程语言一样,函数是 R 的基础。有人说,从本质上讲,R 是一种函数式编程语言(使用正式定义)。这使得它很容易避免重复自己并借鉴他人的工作。R 开箱即用,带有各种各样的函数,可让您完成大量严谨的工作。这些函数来自基础 R。在此基础上,社区创建了数千个软件包,以许多优雅和小众的方式扩展了基础 R 的功能。在本指南中,我们将重点介绍基础 R,这是您首次安装 R 时所使用的。对于新手来说,R 是引擎,RStudio 是最常见的 IDE。
对于那些好奇的人,我们将通过 R v3.5.1、RStudio v1.1.463 和 R Markdown 构建它。
R 中的函数
请注意,R 中的函数模仿了许多其他语言中的行为。然而,R 比大多数语言更进一步,因为 R 函数是“一等公民”,这意味着您可以用它们或对它们执行任何可以对向量执行的操作。
执行函数
首先,让我们调用一个函数。对于那些刚接触编程和/或 R 的人来说,函数会对一些输入进行操作以完成特定任务。最好的函数是简短而具体的。你给它提供一些东西,它会做一些计算并返回一些东西给你。有时一个函数在技术上不会返回任何东西,但可以做一些像打印这样的事情——在本指南中,我们将重点介绍返回某些内容的函数。
让我们从 R 基础包中的内置函数abs()开始,该函数接受一个数字并返回其绝对值。如果输入为负数,则返回正数;如果输入为正数,则返回正数。
成功调用函数的几个技巧之一是提供函数可以使用的输入。在上面的简单abs()函数中,这意味着提供数字。如果您的输入无效,引擎将不会转动。请注意调用abs() 的简单语法。
abs(-3)
请注意,当从函数返回值时,R 会指定与输出相关联的数字是否是第一个输出的值,这就是它说[1] 3的原因。
那如果我们输入文字怎么办?
abs("male")
如上所述,如果您没有输入预期的内容,则没有任何保证。让我们面对现实吧,R 是开源的,所以无论如何您都没有任何保证(尽管它通常工作得很好)。根据您调用的包 - 基础 R 编写得相当好 - 您可能会得到强大的帮助或很少的帮助来确定您的函数调用出了什么问题。
获取帮助
调用函数时,可能会遇到两个主要问题之一:
- 该功能未运行;或
- 该函数未返回您所期望的内容。
假设您对abs()感到困惑。获取帮助并检查是否传递了正确的参数的最简单方法是在 RStudio 控制台或终端中键入?abs()(取决于您在哪里工作)。
R 中函数的组成部分
定义函数
让我们快速向您展示 R 中的函数定义是什么样的。然后,我们将介绍它的组成部分及其应用方式。
请注意,虽然本指南重点介绍内置函数,但我们将在此向您展示如何定义函数,以便我们可以讨论其组件。
summy <- function(a, b) {
a + b
}
R 中的函数通常由三部分组成:
- 形式是你传递给函数的参数。在上面的例子中,即a和b。
- 函数主体是函数内部执行的代码。这里是a + b。
- 函数的环境是另一个考虑因素。这些实际上也是一个函数。要找到summy的环境,我们只需调用环境函数。这表明我们可以将函数作为参数传递给其他函数。
environment(summy)
请注意,它是全局环境的一部分。更多信息请参见此处。
我还需要了解哪些有关函数的知识?
当然,大多数时候您不会将函数打印到控制台,而是将它们分配给变量。
result <- abs(-10)
result
通常你会像这样在函数内调用函数:
abs(min(c(-5, -3, -1)))
有时,你会递归调用函数。也就是说,在函数内,你会调用同一个函数来解决某个问题。斐波那契数列就是一个常见的例子。
fibonacci <- function(n) {
if(n <= 1) {
return(n)
} else {
return(fibonacci(n-1) + fibonacci(n-2))
}
}
如果您是编程新手,那么递归函数可能有点高级,但很有趣。
如何找到 R 的内置函数?
开箱即用,包含哪些内容?
乐于助人的最好方式
虽然有成千上万个函数可供使用,但以下这些函数可以帮助您了解 R 的全部内容。作为练习,请选择五个并确保知道如何使用这些函数。请注意,c()语法是在 R 中创建数字向量的方式。
seq(from = 1,
to = 9,
by = 2)
rep(x = 1:4,
times = 2)
sort(c(1,2,3,-1))
rev(c(9,4,5,6))
table(c(3,3,6,7,7,7))
unique(c(3,3,4,5,9,9,9))
substring(x = "abcdef",
start = 2,
stop = 4)
gsub(x = "Hola, I think that",
replacement = "Hola",
pattern = "Hello")
paste("1st", "2nd", "3rd",
sep = " | ")
paste0("1st", "2nd")
这些功能不仅是 R 工作的基础,还能帮助您确定 R 是否是适合当前工作的工具。
通过 Code/RStudio 搜索
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~