【R语言】函数
一、函数格式
如下所示:
- 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)

正则表达式
相关文章:
【R语言】函数
一、函数格式 如下所示: hello:函数名;function:定义的R对象是函数而不是其它变量;():函数的输入参数,可以为空,也可以包含参数;{}:函数体,如果…...
Vue 3 30天精进之旅:Day 12 - 异步操作
在现代前端开发中,异步操作是一个非常常见的需求,例如从后端API获取数据、进行文件上传等任务。Vue 3 结合组合式API和Vuex可以方便地处理这些异步操作。今天我们将重点学习如何在Vue应用中进行异步操作,包括以下几个主题: 异步操…...
VSCode插件Live Server
简介:插件Live Server能够实现当我们在VSCode编辑器里修改 HTML、CSS 或者 JavaScript 文件时,它都能自动实时地刷新浏览器页面,让我们实时看到代码变化的效果。再也不用手动刷新浏览器了,节省了大量的开发过程耗时! 1…...
50. 正点原子官方系统镜像烧写实验
一、Windows下使用OTG烧写系统 1、在Windos使用NXP提供的mfgtool来向开发烧写系统。需要用先将开发板的USB_OTG接口连接到电脑上。 Mfgtool工具是向板子先下载一个Linux系统,然后通过这个系统来完成烧写工作。 切记!使用OTG烧写的时候要先把SD卡拔出来&…...
在C#中,什么是多态如何实现
在C#中,什么是多态?如何实现? C#中的多态性 多态性是面向对象编程的一个核心概念,他允许对象以多种形式表现.在C#中,多态主要通过虚方法,抽象方法和接口来实现. 多态性的存在使得同一个行为可以有多个不同的表达形式 即同一个接口可以使用不同的实例来执行不同的操作 虚方…...
搜索引擎友好:设计快速收录的网站架构
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/14.html 为了设计一个搜索引擎友好的网站架构,以实现快速收录,可以从以下几个方面入手: 一、清晰的目录结构与层级 合理划分内容:目录结构应…...
扩散模型(三)
相关阅读: 扩散模型(一) 扩散模型(二) Latent Variable Space 潜在扩散模型(LDM;龙巴赫、布拉特曼等人,2022 年)在潜在空间而非像素空间中运行扩散过程,这…...
it基础使用--5---git远程仓库
it基础使用–5—git远程仓库 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念 -git基础使用–3—安装和基本使用 -git基础使用–4—git分支和使用 2. 什么是远程仓库 在第一篇文章中,我们已经讲过了远程仓库,每个本…...
Baklib如何改变内容管理平台的未来推动创新与效率提升
内容概要 在信息爆炸的时代,内容管理平台成为了企业和个人不可或缺的工具。它通过高效组织、存储和发布内容,帮助用户有效地管理信息流。随着技术的发展,传统的内容管理平台逐渐暴露出灵活性不足、易用性差等局限性,这促使市场需…...
100.1 AI量化面试题:解释夏普比率(Sharpe Ratio)的计算方法及其在投资组合管理中的应用,并说明其局限性
目录 0. 承前1. 夏普比率的基本概念1.1 定义与计算方法1.2 实际计算示例 2. 在投资组合管理中的应用2.1 投资组合选择2.2 投资组合优化 3. 夏普比率的局限性3.1 统计假设的限制3.2 实践中的问题 4. 改进方案4.1 替代指标4.2 实践建议 5. 回答话术 0. 承前 如果想更加全面清晰地…...
Ubuntu 下 nginx-1.24.0 源码分析 ngx_debug_init();
目录 ngx_debug_init() 函数: NGX_LINUX 的定义: ngx_debug_init() 函数: ngx_debug_init() 函数定义在 src\os\unix 目录下的 ngx_linux_config.h 中 #define ngx_debug_init() 也就是说这个环境下的 main 函数中的 ngx_debug_init() 这…...
基于人脸识别的课堂考勤系统
该项目是一个基于人脸识别的课堂考勤系统,使用Python开发,结合了多种技术实现考勤功能。要开发类似的基于人脸识别的考勤系统,可参考以下步骤: 环境搭建:利用Anaconda创建虚拟环境,指定Python版本为3.8&am…...
开启 AI 学习之旅:从入门到精通
最近 AI 真的超火,不管是工作还是生活里,到处都能看到它的身影。好多小伙伴都跑来问我,到底该怎么学 AI 呢?今天我就把自己学习 AI 的经验和心得分享出来,希望能帮到想踏入 AI 领域的朋友们! 一、学习内容有哪些 (一)编程语言 Python 绝对是首选!它在 AI 领域的生态…...
13 尺寸结构模块(size.rs)
一、size.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE…...
16.[前端开发]Day16-HTML+CSS阶段练习(网易云音乐五)
完整代码 网易云-main-left-rank(排行榜) <!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)通用异步接收器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控…...
MoonBit 编译器(留档学习)
MoonBit 编译器 MoonBit 是一个用户友好,构建快,产出质量高的编程语言。 MoonBit | Documentation | Tour | Core This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high q…...
【TypeScript】基础:数据类型
文章目录 TypeScript一、简介二、类型声明三、数据类型anyunknownnervervoidobjecttupleenumType一些特殊情况 TypeScript 是JavaScript的超集,代码量比JavaScript复杂、繁多;但是结构更清晰 一、简介 为什么需要TypeScript? JavaScript的…...
Unity游戏(Assault空对地打击)开发(3) 摄像机的控制
详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine,找到 Cinemachine包,点击 Install按钮进行安装。 关闭窗口,新建一个FreeLook Camera,如下。 接着新建一个对象Pos,拖到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设计时,不免好奇这个是如何实现的。在查阅了不少资料后,有了一些想法。参考了:在figma上使用脚本自动生成色谱 这篇文章提供的主要思路是:可以通过脚本的方式构建figma设计。如果我们使用ai 生成figma脚本…...
【周易哲学】生辰八字入门讲解(八)
😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解【周易哲学】生辰八字入门讲解,期待与你一同探索、学习、进步,一起卷起来叭! 目录 一、六亲女命六亲星六亲宫位相互关系 男命六亲星…...
康德哲学与自组织思想的渊源:从《判断力批判》到系统论的桥梁
康德哲学与自组织思想的渊源:从《判断力批判》到系统论的桥梁 第一节:康德哲学中的自然目的论与自组织思想 核心内容: 康德哲学中的自然目的论和反思判断力概念,为现代系统论中的自组织思想提供了哲学基础,预见了复…...
解决whisper 本地运行时GPU 利用率不高的问题
我在windows 环境下本地运行whisper 模型,使用的是nivdia RTX4070 显卡,结果发现GPU 的利用率只有2% 。使用 import torch print(torch.cuda.is_available()) 返回TRUE。表示我的cuda 是可用的。 最后在github 的下列网页上找到了问题 极低的 GPU 利…...
【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具02
工具运行前的环境准备 1、登录用户管理员权限确认 工具使用的登录用户(-u后面的用户),必须具有管理员的权限,因为需要读取系统表 例:Export.bat -s 10.48.111.12 -d db1 -u test -p test -schema dbo 2、Powershell的安全策略确认…...
java异常处理——try catch finally
单个异常处理 1.当try里的代码发生了catch里指定类型的异常之后,才会执行catch里的代码,程序正常执行到结尾 2.如果try里的代码发生了非catch指定类型的异常,则会强制停止程序,报错 3.finally修饰的代码一定会执行,除…...
【人工智能】使用Python和Hugging Face构建情感分析应用:从模型训练到Web部署
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的重要任务,它通过分析文本来判断情绪或观点的倾向性。近年来,预训练语言模型如BERT、GPT等在情感分析任…...
DeepSeek-R1:通过强化学习激励大型语言模型(LLMs)的推理能力
摘要 我们推出了第一代推理模型:DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero是一个未经监督微调(SFT)作为初步步骤,而是通过大规模强化学习(RL)训练的模型,展现出卓越的推理能力。通过强…...
算法随笔_37: 交替合并字符串
上一篇:算法随笔_36: 复写零-CSDN博客 题目描述如下: 给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例…...
