R语言常用数学函数

目录

1.+ - * / ^

2.%/%和%%

3.ceiling,floor,round

4.signif,trunc,zapsamll

5.max,min,mean,pmax,pmin

6.range和sum

7.prod

8.cumsum,cumprod,cummax,cummin

9.sort

10. approx

11.approx fun

12.diff

13.sign

14.var和sd

15.median

16.IQR

17.ave

18.fivenum

19.mad

20.quantile

21.stem

22.一维优化与求根

23.常用数学函数

24.高级数学函数


1.+ - * / ^

1.5 + 2.3 - 0.6 + 2.1*1.2 - 1.5/0.5 + 2^3

## [1] 10.72


#可以用圆括号改变优先级
1.5 + 2.3 - (0.6 + 2.1)*1.2 - 1.5/0.5 + 2^3


## [1] 5.56

2.%/%和%%

5 %/% 3
## [1] 1
5 %% 3
## [1] 2
5.1 %/% 2.5
## [1] 2
5.1 %% 2.5
## [1] 0.1

3.ceiling,floor,round

#"ceiling"函数将输入的数字向上取整,返回大于或等于输入值的最小整数。

ceiling(3.14) # 输出 4
ceiling(-2.5) # 输出 -2

#"floor"函数将输入的数字向下取整,返回小于或等于输入值的最大整数。

floor(3.14) # 输出 3
floor(-2.5) # 输出 -3

#"round"函数将输入的数字四舍五入为最接近的整数。

round(3.14) # 输出 3
round(-2.5) # 输出 -2

#round第二个参数,指定要保留的位数
round(3.14159, 2)将返回保留两位小数的结果:3.14

4.signif,trunc,zapsamll

#signif函数用于保留指定有效数字位数
#它将输入的数字四舍五入到指定位数,并返回结果

signif(3.14159, 3) # 输出 3.14
signif(1234.5678, 2) # 输出 1200

#trunc函数截断(向零取整)输入的数字,即将小数部分去掉

trunc(3.14) # 输出 3
trunc(-2.5) # 输出 -2


#zapsmall函数用于移除非常接近零的小数误差
#它将输入的数字中非常小的值替换为零

zapsmall(1e-10) # 输出 0
zapsmall(0.000000001) # 输出 0

5.max,min,mean,pmax,pmin

#max函数用于计算一组数中的最大值
#它接受多个参数或一个向量作为输入,并返回其中的最大值。

max(2, 5, 1) # 输出 5
max(c(4, 6, 3)) # 输出 6

#min函数用于计算一组数中的最小值
#它接受多个参数或一个向量作为输入,并返回其中的最小值。

min(2, 5, 1) # 输出 1
min(c(4, 6, 3)) # 输出 3

# 计算向量的平均值
x <- c(1, 2, 3, 4, 5)
avg <- mean(x)

print(avg)
#输出 [1] 3

#pmax函数用于逐个比较两个或多个向量中的相应元素
#并返回对应位置上的最大值向量

pmax(c(1, 3, 5), c(2, 4, 6)) # 输出 2 4 6
pmax(c(1, 3, 5), c(2, 4, 6), c(0, 8, 7)) # 输出 2 8 7

#pmin函数用于逐个比较两个或多个向量中的相应元素
#并返回对应位置上的最小值向量

pmin(c(1, 3, 5), c(2, 4, 6)) # 输出 1 3 5
pmin(c(1, 3, 5), c(2, 4, 6), c(0, 8, 7)) # 输出 0 3 5


6.range和sum

#返回一个包含最小值和最大值的长度为2的向量

range(c(2, 5, 1)) # 输出 1 5
range(1:10) # 输出 1 10

#sum函数用于计算给定向量或数值序列的总和
#它接受一个向量作为输入,并返回所有元素的累加和

sum(c(2, 5, 1)) # 输出 8
sum(1:10) # 输出 55

7.prod

#prod是用于计算一组数的乘积的函数

prod(c(2, 3, 4)) # 输出 24,即 2 * 3 * 4

#如果向量中存在0,则结果将始终为0

prod(c(2, 0, 4)) # 输出 0,因为存在0

#同样,如果向量中有任何非数值(例如字符或缺失值)
则结果将为NA(不可用)

prod(c(2, "a", 4)) # 输出 NA,因为存在非数值元素

8.cumsum,cumprod,cummax,cummin

#cumsum函数用于计算给定向量或数值序列中元素的累积和

cumsum(c(2, 3, 4)) 
# 输出 2 5 9,即 2, 2+3, 2+3+4

#cumprod函数用于计算给定向量或数值序列中元素的累积乘积

cumprod(c(2, 3, 4)) 
# 输出 2 6 24,即 2, 2*3, 2*3*4

#cummax函数用于计算给定向量或数值序列中元素的累积最大值

cummax(c(2, 3, 4, 1, 5)) 
# 输出 2 3 4 4 5,即 2, max(2,3), max(2,3,4), max(2,3,4,1), max(2,3,4,5)

#cummin函数用于计算给定向量或数值序列中元素的累积最小值

cummin(c(2, 3, 4, 1, 5)) 
# 输出 2 2 2 1 1,即 2, min(2,3), min(2,3,4), min(2,3,4,1),min(2,3,4,1,5)

9.sort

(1)对向量排序

sort(c(3, 1, 4, 2)) # 输出 1 2 3 4

(2) 降序排序

sort(c(3, 1, 4, 2), decreasing = TRUE) # 输出 4 3 2 1

(3) 对数据框按照某列进行排序

df <- data.frame(x = c(3, 1, 4, 2), y = c("A", "B", "C", "D"))
sorted_df$x  # 获取排序后的 x 列
sorted_df$y  # 获取排序后的 y 列
sorted_df[1, ]  # 获取排序后的第一行数据

(4) 降序排序

sorted_df <- df[order(df$x, decreasing = TRUE), ] # 按 x 列降序排序

10. approx

#approx函数用于执行线性插值或平滑插值
approx(x, y = NULL, xout, method = "linear", rule = 2, f = 0, ties = mean)

常用参数

  • x:输入变量的向量。
  • y:输出变量的向量。当进行插值时,需要提供此参数。
  • xout:用于进行估计或插值的输出变量的取值点。这是一个可选的参数。
  • method:指定插值方法,默认为"linear"(线性插值)。还可以选择"constant"(常数插值)或"spline"(样条插值)等。
  • rule:在估计或插值点不在输入变量范围内时的处理规则。它控制如何对缺失值或超出范围的值进行处理。默认为2,表示生成具有最小相对误差的结果。
  • f:自定义函数,用于在估计或插值点上执行特定的计算。
  • ties:用于处理在估计或插值点存在多个匹配的情况下如何处理。
    • "ordered":根据输入变量 x 的顺序,按照与估计或插值点最接近的方式处理匹配值。默认情况下,ties参数设置为"mean"
    • "mean":将匹配值的平均值作为结果。如果有多个匹配值,将它们的平均值用于计算结果。
    • "min":选择匹配值中的最小值作为结果。
    • "max":选择匹配值中的最大值作为结果。
# 创建输入数据
x <- c(1, 2, 4, 5)  # 输入变量 x
y <- c(3, 6, 2, 8)  # 输出变量 y

# 进行线性插值
interp <- approx(x, y, xout = seq(min(x), max(x), by = 0.1))

# 输出结果
print(interp)

11.approx fun

# 自定义函数
my_fun <- function(x, y) {
  return(x^2 + y)
}

# 创建输入数据
x <- c(1, 2, 4, 5)
y <- c(3, 6, 2, 8)

# 使用自定义函数进行插值
interp <- approx(x, y, xout = seq(min(x), max(x), by = 0.1), f = my_fun)

# 输出结果
print(interp)

12.diff

#diff函数用于计算向量或时间序列的差分
#对于长度为 n 的向量,diff函数将返回一个长度为 n-1 的向量
#其中第 i 个元素是原始向量中第 (i+1) 个元素减去第 i 个元素的结果。
vec <- c(2, 6, 5, 8, 3)

diff_vec <- diff(vec)

print(diff_vec)

#输出 [1]  4 -1  3 -5

13.sign

sign函数用于返回给定数值的符号

  • 如果输入值大于0,则返回1。
  • 如果输入值等于0,则返回0。
  • 如果输入值小于0,则返回-1。
num <-  -5

sign_num <- sign(num)

print(sign_num)

#输出 [1] -1
#因为-5是一个负数

14.var和sd

# 计算向量的方差和标准差
x <- c(1, 2, 3, 4, 5)

variance <- var(x)
standard_deviation <- sd(x)

print(variance)
print(standard_deviation)

15.median

# 计算向量的中位数
x <- c(1, 2, 3, 4, 5)

median_value <- median(x)

print(median_value)

#输出 [1] 3

16.IQR

# 计算向量的四分位距
x <- c(1, 2, 3, 4, 5)

iqr_value <- IQR(x)

print(iqr_value)

#输出 [1] 2

17.ave

用于根据某个变量对向量或数据框进行分组,并对每个组应用函数

# 创建一个数据框
df <- data.frame(
  name = c("Alice", "Bob", "Alice", "Charlie", "Charlie", "Bob"),
  score = c(85, 90, 92, 78, 80, 88)
)

# 对数据框中的 score 列按 name 分组,计算每个组的平均值
average_scores <- ave(df$score, df$name, FUN = mean)

print(average_scores)

18.fivenum

# 计算向量的五数概括统计量
#包括最小值、下四分位数、中位数、上四分位数和最大值
x <- c(1, 2, 3, 4, 5)

fivenum_values <- fivenum(x)

print(fivenum_values)

19.mad

# 计算向量的绝对中位差
x <- c(1, 2, 3, 4, 5)

mad_value <- mad(x)

print(mad_value)

20.quantile

# 计算向量的分位数
x <- c(1, 2, 3, 4, 5)

# 计算四分位数
quartiles <- quantile(x, probs = c(0.25, 0.5, 0.75))

print(quartiles)

21.stem

# 创建茎叶图
x <- c(12, 23, 34, 45, 56, 67, 78, 89, 90)

stem(x)

22.一维优化与求根

(1)optimize

optimize() 函数用于在给定区间内寻找一个函数的最小值或最大值。

#optimize(f, interval, maximum = FALSE, tol = .Machine$double.eps^0.25)

#f 是要最小化或最大化的函数;
#interval 是定义函数的有效区间。
#maximum:一个逻辑值,用于指定是寻找最小值还是最大值。默认为 FALSE,表示寻找最小值。
#tol:一个数值,表示收敛容差(convergence tolerance)。默认值为 .Machine$double.eps^0.25,使用机器精度的推荐容差。

f <- function(x) x^2 - 4 * x + 3

result <- optimize(f, c(0, 5))
print(result$minimum)  # 输出函数的最小值
#输出 [1] 2

(2)uniroot

uniroot() 函数用于在给定区间内寻找一个函数的根

#uniroot(f, interval)
#f 是要寻找根的函数;interval 是定义函数的有效区间
f <- function(x) x^3 - 2 * x - 5

result <- uniroot(f, c(1, 3))
print(result$root)  # 输出函数的根

#输出 [1] 2.094526

(3)polyroot

polyroot() 函数用于找到多项式函数的所有根

# polyroot(coeffs)
#coeffs 是一个包含多项式系数的向量

coeffs <- c(1, -5, 4)

roots <- polyroot(coeffs)
print(roots)  # 输出多项式函数的所有根

#输出 [1] 4+0i 1+0i

23.常用数学函数

#abs:获取数值的绝对值
abs(-5) # 输出 5
abs(3.14) # 输出 3.14

#sqrt:计算数值的平方根
sqrt(9) # 输出 3
sqrt(2) # 输出 1.414213 


#sin:正弦
sin(x)

#cos:余弦
cos(x)

#tan:正切
tan(x)

#asin:反正弦
asin(x)

#acos:反余弦
acos(x)

#atan:反正切
atan(x)

#atan2:给定y和x坐标的反正切
atan2(y,x)

#sinh:双曲正弦值
sinh(x)

#cosh:双曲余弦值
cosh(x)

#tanh:双曲正弦值
tanh(x)

#ashih:反双曲正弦值
ashih(x)

#acosh:反双曲余弦值
acosh(x)

#atanh:反双曲正切值
atanh(x)

24.高级数学函数

#beta函数:计算两个参数的Beta函数值

beta(x,y)

#lbeta函数:计算两个参数的Beta函数的自然对数

lbeta(x,y)

#gamma函数:计算给定参数的伽玛函数值

gamma(x)

#lgamma函数:计算给定参数的伽玛函数的自然对数

lgamma(x)

#digamma函数:计算给定参数的Ψ函数值(第一类对数勒让德函数)

digamma(x)

#digamma函数:计算给定参数的Ψ函数值(第一类对数勒让德函数)

trigamma(x)

#tetragamma函数:计算给定参数的Ψ函数的二阶导数值(第三类对数勒让德函数)

tetragamma(x)

#pentagamma函数:计算给定参数的Ψ函数的三阶导数值(第四类对数勒让德函数)

pentagamma(x)

#choose函数:计算组合数

choose(n,k)

#lchoose函数:计算组合数的自然对数

lchoose(n,k)

#fft函数:执行快速傅里叶变换(FFT),将信号从时域转换为频域。

fft(x)

#mvfft函数:执行多维傅里叶变换。

mvfft(x)

#convolve函数:计算两个向量的卷积(线性卷积)。

convolve(x, y)

#polyroot函数:找到多项式的根。

polyroot(p)

#polyroot函数:找到多项式的根。

poly(x,degree)

#spline函数:执行样条插值,生成平滑插值曲线。

spline(x, y, xout)

#splinefun函数:生成根据样条插值生成的函数。

splinefun(x,y)


参数 x:输入值。参数 nu:阶数。
#besselI函数:计算修正的贝塞尔函数I。

besselI(x, nu)

#besselK函数:计算修正的贝塞尔函数K。

besselK(x,nu)

#besselJ函数:计算贝塞尔函数J。

besselJ(x, nu)

#besselY函数:计算贝塞尔函数Y。

besselY(x, nu)

#gammaCody函数:计算递归修正伽玛函数。

gammaCody(x)

#deriv函数:对简单表达式进行符号微分或算法微分。

deriv(expr, name)

如有新学习的知识会补充,如有错误或遗漏请大佬们不吝赐教!!💖💖💖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

layui框架学习(42:文件上传模块-上)

之前学习asp.net core编程入门教程时结合layui测试过文件上传《基于ASP.Net Core和Layui的多文件上传》&#xff0c;但没有认真学习过layui的文件上传模块&#xff0c;本文开始&#xff0c;计划分两章学习并记录文件上传模块中的属性、事件及函数的使用方法。   layui中的文件…

第八章 贪心算法 part03 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果 (day34补)

本文章代码以c为例&#xff01; 一、力扣第1005题&#xff1a;K 次取反后最大化的数组和 题目: 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择…

kafka--技术文档--架构体系

架构体系 Kafka的架构体系包括以下几个部分&#xff1a; Producer. 消息生产者&#xff0c;就是向Kafka broker发送消息的客户端。Broker. 一台Kafka服务器就是一个Broker。一个集群由多个Broker组成。一个Broker可以容纳多个Topic。Topic. 可以理解为一个队列&#xff0c;一…

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】

&#x1f600;前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…

PDF制作成翻页电子书

在日常工作中&#xff0c;大部分人使用的都是PDF文档发送给客户&#xff0c;但是PDF文档通常是静态的&#xff0c;缺乏交互性和视觉吸引力。那你有没有想过把它转换成翻页的电子书呢&#xff1f; 小编将告诉你操作步骤&#xff0c;非常简单 1.搜索FLBOOK在线制作电子杂志平台 …

oracle 基础运用2

首先在电脑上安装PLSQL developer&#xff0c;这个是oracle图形化连接工具&#xff0c;然后安装win64_11gR2_client&#xff0c;这个是orace客户端&#xff0c;安装完成后可以在cmd命令行输入sqlplus命令进行验证&#xff0c;如图表示安装成功。 作为sys的连接应该是SySDBA或Sy…

基于HarmonyOS ArkUI实现七夕壁纸轮播

七夕情人节&#xff0c;为了Ta&#xff0c;你打算用什么方式表达爱&#xff1f;是包包、鲜花、美酒、巧克力&#xff0c;还是一封充满爱意的短信&#xff1f;作为程序员&#xff0c;以代码之名&#xff0c;表达爱。本节将演示如何在基于HarmonyOS ArkUI的SwiperController、Ima…

服务器数据恢复-ESXi虚拟化误删除的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器安装的ESXi虚拟化系统&#xff0c;该虚拟化系统连接了多个LUN&#xff0c;其中一个LUN上运行了数台虚拟机&#xff0c;虚拟机安装Windows Server操作系统。 服务器故障&分析&#xff1a; 管理员因误操作删除了一台虚拟机&#x…

Nacos基础(2)——nacos的服务器和命名空间 springBoot整合nacos 多个nacos配置的情况

目录 引出nacos服务器和命名空间Nacos服务器命名空间 springBoot整合nacosspringcloud Alibaba 版本与springcloud对应关系引包配置maincontroller 报错以及解决【报错】错误&#xff1a;缺少服务名称报错&#xff1a;9848端口未开放 启动测试引入多个nacos配置多个配置的情况没…

Apache StreamPark系列教程第二篇——项目打包和开发

一、项目打包 项目依赖maven、jdk8.0、前端(node、npm) //下载代码 git clone//maven打包相关内容 mvn -N io.takari:maven:wrapper //前端打包相关内容 curl -sL https://rpm.nodesource.com/setup_16.x | bash - yum -y install nodejs npm -v npm install -g pnpm默认是h2…

微服务分布式搜索引擎 ElasticSearch 查询文档

文章目录 ⛄引言一、DSL查询文档⛅DSL 查询分类 二、DSL查询实例⛅全文检索查询⏰精确查询⚡地理坐标查询⌚复合查询 ⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海…

Stable Diffusion 文生图技术原理

图像生成模型简介 图片生成领域来说&#xff0c;有四大主流生成模型&#xff1a;生成对抗模型&#xff08;GAN&#xff09;、变分自动编码器&#xff08;VAE&#xff09;、流模型&#xff08;Flow based Model&#xff09;、扩散模型&#xff08;Diffusion Model&#xff09;。…

深度学习3. 强化学习-Reinforcement learning | RL

强化学习是机器学习的一种学习方式&#xff0c;它跟监督学习、无监督学习是对应的。本文将详细介绍强化学习的基本概念、应用场景和主流的强化学习算法及分类。 目录 什么是强化学习&#xff1f; 强化学习的应用场景 强化学习的主流算法 强化学习(reinforcement learning) …

Flutter 逆向安全

前言&#xff1a; 前几天在 "学习" 一个项目&#xff0c; 发现是用 Flutter 开发的。之前研究过 flutter 的逆向&#xff0c;早期 Flutter 有工具可以通过快照进行反编译&#xff1a;《对照表如下》 新的版本开发者没有维护了。 目前没有很好的工具 可以对 Flutter 进…

网络地址转换NAT-动态NAT的使用范围和配置-思科EI,华为数通

网络地址转换NAT-动态NAT的使用范围和配置 什么是动态NAT&#xff1f; 使用公有地址池&#xff0c;并以先到先得的原则分配这些地址。当具有私有 IP 地址的主机请求访问 Internet 时&#xff0c;动态 NAT 从地址池中选择一个未被其它主机占用的 IP 地址一对一的转化。当数据会话…

Spring -学习笔记

文章目录 1. Spring介绍1.1 Spring的体系结构 2.DI/Ioc&#xff08;依赖注入/控制反转&#xff09;2.1 依赖及注解说明1. lombok2. spring-context 2.2 Bean和Spring 上下文的配置方式方式1&#xff1a;基于xml文件的配置方法2&#xff1a; 基于java注解配置bean方法3&#xff…

5G 数字乡村数字农业农村大数据中心项目农业大数据建设方案PPT

导读&#xff1a;原文《5G 数字乡村数字农业农村大数据中心项目农业大数据建设方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。以下是部分内容&#xff0c; 喜…

Deep Learning With Pytorch - 数据预处理,以导入LUNA16数据集为例

文章目录 数据集简介什么是CT扫描&#xff1f;导入大型数据集并不是一份轻松的工作 在Jupyter Notebook中导入LUNA16数据集导入可能用到的第三方库&#xff1a;LUNA16存放路径&#xff1a;用 pandas 读取 candidates.csv&#xff1b;读取 annotations.csv导入subset0和subset1的…

Java中word转Pdf工具类

背景&#xff1a; 最近做的一个项目中&#xff0c;对于word转Pdf用的地方很多&#xff0c;特此记录 搭建总图&#xff1a; 代码部分&#xff1a; 1.需要的jar包&#xff1a; aspose-words-15.8.0-jdk16.jar 注&#xff1a;下载好这个jar包后&#xff0c;在项目的根目录新建一…

Django(8)-静态资源引用CSS和图片

除了服务端生成的 HTML 以外&#xff0c;网络应用通常需要一些额外的文件——比如图片&#xff0c;脚本和样式表——来帮助渲染网络页面。在 Django 中&#xff0c;我们把这些文件统称为“静态文件”。 我们使用static文件来存放静态资源&#xff0c;django会在每个 INSTALLED…
最新文章