【R语言】函数

news2025/2/3 11:19:29

一、函数格式

如下所示:

  • hello:函数名;
  • function:定义的R对象是函数而不是其它变量;
  • ():函数的输入参数,可以为空,也可以包含参数;
  • {}:函数体,如果函数体只有一行,可以省略{}。
hello <- function() {
    out <- "hello, ning."
    return(out)
}
hello()

二、函数参数

函数参数可以是变量中的任何一种:向量、矩阵、数据框、列表、因子、逻辑值等。

1、缺省参数

缺省参数是在函数参数声明中对函数的某个参数指定的默认值。此处不过多赘述。

2、额外参数

R语言中称之为点点点(...)参数。额外参数允许函数具有除函数体所需输入参数之外的其它参数,并且不需要在函数参数声明中一一指定,具有很大的灵活性。

额外参数可以解决函数参数不确定或需要引用其它函数输出值作为输入参数的问题。

hello <- function(name = NULL, ...){
    out <- paste("你好," name)
    return(out)
}
hello(name = "R", extra = "Python")
hello()

三、函数返回值

 函数返回值可以是任何R语言对象。

  • 函数最后一行代码如果不是进行变量赋值的话,那么最后一行代码的运行值会自动返回。
  • 使用return命令清晰指定需要返回的值,并告知函数退出运行。

四、函数调用

R函数有两种调用方式:

  • 最常见的是通过函数名称调用;
  • 其次是通过 do.call()函数 形式,使用此方法时,需要先指定被调用函数的名称,然后以列表形式指定被调用函数的参数值。

如下示例为第二种调用方式:

do.call(what = hello, args = list(name = "R"))

五、常用R函数

1、文件操作函数

查看目录和文件函数

getwd():查看当前工作目录

list.dirs(path=getwd(),full.names=F):查看当前目录或指定目录的子目录

dir():查看当前子目录

list.dir():查看当前子目录的文件

file.info(list.files(),extra_cols=F):查看当前目录的子目录及文件的详细信息

file.mode(list.files()):查看当前目录及文件权限信息

file.mtime(list.files()):查看当前目录及文件最近一次修改信息

file.size(list.files()):查看当前目录及文件大小

system("tree"):查看目录结构。

检查目录和文件函数

file.exists():查看文件是否存在

file_test(op=“-d”, x="wn"):查看wn是否是目录

file_test(op="-f", x = "wn.txt"):查看wn.txt是否是文件

创建目录和文件函数

path.expand():将输入文件目录替换为当前系统平台支持的文件目录

file.create():创建空白文件

dir.create():创建空白目录

变更目录和文件函数

file.copy(from="test.R", to="test",overwrite=T,recursive=T):赋值文件test.R到test文件夹里。

file.name(from="test.R", to="test1.R"):将文件test.R重命名为test1.R

file.append(file1="test.R", file2="test1.R"):将test.R追加到test1.R中

删除目录和文件函数

file.remove(c("test1.R","test.R")):删除文件test1.R和test.R

unlink("test",recursive=T):删除test文件夹及其子文件夹

2、计算函数

四则运算函数

x <- 20
y <- 47
# 加法
x + y
# 减法
x - y
# 乘法
x * y
# 除法
x / y
# 取余数
y %% x
# 取绝对值
abx(-y)

数学计算函数

x <- 3
y <- 2
# 幂运算
x ^ y
x ^ -y
x ^ (1/y)
# 对数
log(x, base = 2)
# 平方根
sqrt(y)

比较函数

x <- 7
y <- 6
# 等于与不等于
x == y
x != y
# 大于、大于等于、小于、小于等于
x > y
x >= y
x < y
x <= y
# 是否为真
isTRUE(x != y)
# 是否为假
isFALSE(x == y)

向量比较

x <- c(0,0,1)
y <- c(1,1,0)
# 向量的和条件比较
x & y
# x向量和y向量的第一个分量的和条件比较
x && y
# 或条件比较
xor(x,y)
x | y

约数函数

取整、向上取整、向下取整、四舍五入

x <- 2.33333
# 取整
trunc(x)
# 向上取整
ceiling(x)
# 向下取整
floor(x)
# 四舍五入
round(x)

向量计算函数

标准差、方差、全距、连乘、累加、累乘、秩次、排序、中位数、分位数

x <- seq(from=1, to=10, by = 2)
# 求和、平均值、最大值、最小值
sum(x)
mean(x)
max(x)
min(x)
# 求标准差、方差、全距
sd(x)
var(x)
range(x)
# 求连乘、累加、累乘
prod(x)
cumsum(x)
cumprod(x)
# 求秩次、排序、中位数和分位数
rank(x)
order(x, decreasing = T)
sort(x, decreasing = T)
median(x)
quantile(x)

集合计算函数

x <- seq(from = 1, to = 10, by = 1)
y <- seq(from = 1, to = 20, by = 2)
# 求交集
intersect(x,y)
# 求并集
union(x,y)
# 求差集
setdiff(x,y)
# 判断是否相等
setequal(x,y)
# 求取y的唯一值
unique(y)
# 查找y中大于8的元素索引
which(y >= 8)
# 查找x在y中存在的元素索引
which(is.element(x,y))

3、概率分布函数

主要包括正态分布、均匀分布、指数分布、Gamma分布、Beta分布、t分布、F分布、卡方分布

正态分布

随机数生成函数、概率密度函数和累积分布函数。

# 随机生成30个平均数为0,标准差为1的正态分布随机数
x <- rnorm(n = 30, mean = 0, sd = 1)
# 求正态向量x的概率密度函数值
dnorm(x, mean = 0, sd = 1)
# 求正态向量x的累积分布函数值
pnorm(x, mean = 0, sd = 1)

均匀分布

随机数生成函数、概率密度函数和累积分布函数。

# 生成20个0~100,并服从均匀分布的随机数
x <- runif(n = 20, min = 0, max = 100)
# 求服从均匀分布向量x的概率密度函数值
dunif(x, min = 0, max = 100)
# 求服从均匀分布向量x的累积分布函数值
punif(x, min = 0, max = 100)

指数分布

 随机数生成函数、概率密度函数和累积分布函数。

# 生成10个服从指数分布e(0.5)的随机数
x <- rexp(n = 10, rate = 0.5)
# 求服从指数分布e(0.5)向量x的概率密度函数值
dexp(x, rate = 0.5)
# 求服从指数分布e(0.5)向量x的累积分布函数值
pexp(x, rate = 0.5)

Gamma分布

随机数生成函数、概率密度函数和累积分布函数

# 生成10个服从形状参数为5,尺度参数为3的gamma分布随机数
x <- rgamma(n = 10, shape = 5, scale = 3)
# 求gamma分布向量x的概率密度函数值
dgamma(x, shape = 5, scale = 3)
# 求gamma分布向量x的累积分布函数值
pgamma(x, shape = 5, scale = 3)

Beta分布

随机数生成函数、概率密度函数和累积分布函数

# 生成10个服从形状参数分别为2的beta分布随机数
x <- rbeta(n = 10, shape1 = 2, shape2 = 2)
# 求beta分布向量x的概率密度函数值
dbeta(x, shape1 = 2, shape2 = 2)
# 求beta分布向量x的累积分布函数值
pbeta(x, shape1 = 2, shape2 = 2)

t分布

随机数生成函数、概率密度函数和累积分布函数

# 生成10个服从自由度为3的t分布随机数
x <- rt(n = 10, df = 3)
# 求t分布向量x的概率密度函数值
dt(x, df = 3)
# 求t分布向量x的累积分布函数值
pt(x, df = 3)

F分布

随机数生成函数、概率密度函数和累积分布函数

# 生成10个服从自由度分别为3和7的F分布随机数
x <- rf(n = 10, df1 = 3, df2 = 7)
# 求F分布向量x的概率密度函数值
df(x, df1 = 3, df2 = 7)
# 求F分布向量x的累积分布函数值
pf(x, df1 = 3, df2 = 7)

卡方分布

随机数生成函数、概率密度函数和累积分布函数

# 生成10个服从自由度为7的卡方分布随机数
x <- rchisq(n = 10, df = 7)
# 求卡方分布向量x的概率密度函数值
dchisq(x, df = 7)
# 求卡方分布向量x的累积分布函数值
pchisq(x, df = 7)

4、字符处理函数

字符串长度计算、拼接和拆分

# 求取字符串的长度
nchar("R语言的用处大吗?")
# 拼接字符串
paste("R语言", "Python语言", sep = "", collapse = "")
paste0("R语言", "Python语言", collapse = "")
# 拆分字符串
strsplit(x = "a;b;c;d;f;h", split = ";", fixed = T)

字符串的查找、抽取和替换

函数参数说明:

  • pattern:需要查找、抽取或替换的字符模式,参数值可以是字符串或正则表达式;
  • fixed:决定将pattern参数设定为字符串还是正则表达式,默认为FALSE,即pattern为正则表达式;
  • useBytes:决定是逐字符进行匹配还是根据字符进行匹配,默认为逐字符进行匹配;
  • ignore.case:在英文字符模式匹配下是否区分大小写,默认为FALSE,即区分大小写;
  • perl:是否使用与perl语言兼容的正则表达式,默认为FALSE,即不使用。
x <- c("R语言好", "Python语言也不错", "学习R语言", "你喜欢R语言吗?","Ren")

# 查找字符串向量x中包含“R语言”的字符并显示出其标号
grep(pattern = "R语言", x = x, ignore.case = F, perl = F, value = F, fixed = FALSE, useBytes = F, invert = F)
# 查找字符串向量x中包含“R语言”的字符并返回逻辑值
grepl(pattern = "R语言", x = x, ignore.case = F, perl = F, fixed = FALSE, useBytes = F)
# 抽取字符串向量x中的第1个字符至第3个字符
substr(x = x, start = 1, stop = 3)
# 将字符串向量x中的“R语言”替换成"r语言"
sub(pattern = "R语言", replacement = "r语言", x = x, ignore.case = F, perl = F, fixed = F, useBytes = F)

正则表达式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2291234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode插件Live Server

简介&#xff1a;插件Live Server能够实现当我们在VSCode编辑器里修改 HTML、CSS 或者 JavaScript 文件时&#xff0c;它都能自动实时地刷新浏览器页面&#xff0c;让我们实时看到代码变化的效果。再也不用手动刷新浏览器了&#xff0c;节省了大量的开发过程耗时&#xff01; 1…

50. 正点原子官方系统镜像烧写实验

一、Windows下使用OTG烧写系统 1、在Windos使用NXP提供的mfgtool来向开发烧写系统。需要用先将开发板的USB_OTG接口连接到电脑上。 Mfgtool工具是向板子先下载一个Linux系统&#xff0c;然后通过这个系统来完成烧写工作。 切记&#xff01;使用OTG烧写的时候要先把SD卡拔出来&…

扩散模型(三)

相关阅读&#xff1a; 扩散模型&#xff08;一&#xff09; 扩散模型&#xff08;二&#xff09; Latent Variable Space 潜在扩散模型&#xff08;LDM&#xff1b;龙巴赫、布拉特曼等人&#xff0c;2022 年&#xff09;在潜在空间而非像素空间中运行扩散过程&#xff0c;这…

it基础使用--5---git远程仓库

it基础使用–5—git远程仓库 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念 -git基础使用–3—安装和基本使用 -git基础使用–4—git分支和使用 2. 什么是远程仓库 在第一篇文章中&#xff0c;我们已经讲过了远程仓库&#xff0c;每个本…

Baklib如何改变内容管理平台的未来推动创新与效率提升

内容概要 在信息爆炸的时代&#xff0c;内容管理平台成为了企业和个人不可或缺的工具。它通过高效组织、存储和发布内容&#xff0c;帮助用户有效地管理信息流。随着技术的发展&#xff0c;传统的内容管理平台逐渐暴露出灵活性不足、易用性差等局限性&#xff0c;这促使市场需…

16.[前端开发]Day16-HTML+CSS阶段练习(网易云音乐五)

完整代码 网易云-main-left-rank&#xff08;排行榜&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&q…

ARM嵌入式学习--第十天(UART)

--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器&#xff0c;是一种通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工传输和接收。在嵌入式设计中&#xff0c;UART用来与PC进行通信&#xff0c;包括与监控…

Unity游戏(Assault空对地打击)开发(3) 摄像机的控制

详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine&#xff0c;找到 Cinemachine包&#xff0c;点击 Install按钮进行安装。 关闭窗口&#xff0c;新建一个FreeLook Camera&#xff0c;如下。 接着新建一个对象Pos&#xff0c;拖到Player下面…

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)

目录 1 -> 生命周期 1.1 -> 应用生命周期 1.2 -> 页面生命周期 2 -> 资源限定与访问 2.1 -> 资源限定词 2.2 -> 资源限定词的命名要求 2.3 -> 限定词与设备状态的匹配规则 2.4 -> 引用JS模块内resources资源 3 -> 多语言支持 3.1 -> 定…

小程序-基础加强-自定义组件

前言 这次讲自定义组件 1. 准备今天要用到的项目 2. 初步创建并使用自定义组件 这样就成功在home中引入了test组件 在json中引用了这个组件才能用这个组件 现在我们来实现全局引用组件 在app.json这样使用就可以了 3. 自定义组件的样式 发现页面里面的文本和组件里面的文…

尝试ai生成figma设计

当听到用ai 自动生成figma设计时&#xff0c;不免好奇这个是如何实现的。在查阅了不少资料后&#xff0c;有了一些想法。参考了&#xff1a;在figma上使用脚本自动生成色谱 这篇文章提供的主要思路是&#xff1a;可以通过脚本的方式构建figma设计。如果我们使用ai 生成figma脚本…

【周易哲学】生辰八字入门讲解(八)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【周易哲学】生辰八字入门讲解&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 一、六亲女命六亲星六亲宫位相互关系 男命六亲星…

解决whisper 本地运行时GPU 利用率不高的问题

我在windows 环境下本地运行whisper 模型&#xff0c;使用的是nivdia RTX4070 显卡&#xff0c;结果发现GPU 的利用率只有2% 。使用 import torch print(torch.cuda.is_available()) 返回TRUE。表示我的cuda 是可用的。 最后在github 的下列网页上找到了问题 极低的 GPU 利…

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具02

工具运行前的环境准备 1、登录用户管理员权限确认 工具使用的登录用户(-u后面的用户)&#xff0c;必须具有管理员的权限&#xff0c;因为需要读取系统表 例&#xff1a;Export.bat -s 10.48.111.12 -d db1 -u test -p test -schema dbo      2、Powershell的安全策略确认…

java异常处理——try catch finally

单个异常处理 1.当try里的代码发生了catch里指定类型的异常之后&#xff0c;才会执行catch里的代码&#xff0c;程序正常执行到结尾 2.如果try里的代码发生了非catch指定类型的异常&#xff0c;则会强制停止程序&#xff0c;报错 3.finally修饰的代码一定会执行&#xff0c;除…

DeepSeek-R1:通过强化学习激励大型语言模型(LLMs)的推理能力

摘要 我们推出了第一代推理模型&#xff1a;DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero是一个未经监督微调&#xff08;SFT&#xff09;作为初步步骤&#xff0c;而是通过大规模强化学习&#xff08;RL&#xff09;训练的模型&#xff0c;展现出卓越的推理能力。通过强…

低成本、高附加值,具有较强的可扩展性和流通便利性的行业

目录 虚拟资源类 1. 网课教程 2. 设计素材 3. 软件工具 服务类 1. 写作服务 2. 咨询顾问 3. 在线教育 4. 社交媒体管理 虚拟资源类 1. 网课教程 特点&#xff1a;高附加值&#xff0c;可复制性强&#xff0c;市场需求大。 执行流程&#xff1a; 选择领域&#xff1a…

vue入门到实战 二

目录 2.1 计算属性computed 2.1.1什么是计算属性 2.1.2 只有getter方法的计算属性 2.1.3 定义有getter和setter方法的计算属性 2.1.4 计算属性和methods的对比 2.2 监听器属性watch 2.2.1 watch属性的用法 2.2.2 computed属性和watch属性的对比 2.1 计算属性computed…

二叉树-堆(补充)

二叉树-堆 1.二叉树的基本特性2.堆2.1.堆的基本概念2.2.堆的实现2.2.1.基本结构2.2.2.堆的初始化2.2.3.堆的销毁2.2.4.堆的插入2.2.5.取出堆顶的数据2.2.6.堆的删除2.2.7.堆的判空2.2.8.堆的数据个数2.2.9.交换2.2.10.打印堆数据2.2.11.堆的创建2.2.12.堆排序2.2.13.完整代码 3…

基于springboot私房菜定制上门服务系统设计与实现(源码+数据库+文档)

私房菜定制上门服务系统目录 目录 基于springbootvue私房菜定制上门服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 &#xff08;1&#xff09;菜品管理 &#xff08;2&#xff09;公告管理 &#xff08;3&#xff09; 厨师管理 2、用…