百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

R语言|常用函数的用法

bigegpt 2024-09-05 12:18 8 浏览

一,合并向量

>append(x, values, after = length(x))
#从一个向量的指定位置处,插入另一个向量
>append(1:5, 0:1, after = 3)
[1] 1 2 3 0 1 4 5

二,匹配函数

匹配函数(match)返回一个位置向量,表示 x 匹配table的位置。%in% 返回一个逻辑向量

x %in% table  #%in% 返回一个逻辑向量,表示左边的操作符是否匹配右边的操作符。

2.1 match()函数的用法

x <- c(3,1,7)
tb <- c(-1:5)
match(x,tb)
# 5  3 NA

#实例
#match()函数可以用于批量修改数据框的列名:
names(df)[match(c('a',"b", "c)","d"),names(df))]<- c('C1','C2','C3','C4')

2.2 操作符 %in%的用法

#操作符 %in% 在底层使用match()函数实现:
#用法  function(x, table) match(x, table, nomatch = 0) > 0
1:10 %in% c(1,3,5,9)
#[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE

三,cut函数

cut()函数用于切割x的范围,每一个范围是一个分区;cut()函数根据分区的顺序对x中的值进行编码,也就是说,每一个分区从左向右依次对应lables向量中的一个因子,最左边的分区对应于lables向量的第一个因子,第二个分区对应lables向量中的第二个因子,以此类推。

cut(x, breaks, labels = NULL, include.lowest = FALSE, right = TRUE, dig.lab = 3,ordered_result = FALSE, ...)
 #示例
 vc <- c(1:6)
cut(vc,breaks=c(0,2,5,7),labels = c('low','medium','high'))
#[1] low    low    medium medium medium high  
#Levels: low medium high

四,排名函数

功能:rank()排名函数用于对向量元素进行排名,按照升序的顺序对数据进行排序,排名的结果存储到变量中。

#用法:rank(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min"))
#参数注释
#na.last :控制如何对待NA,如果设置为TRUE,那么缺失值排在最后一位;如果为FALSE,那么缺失值排在第一位;如果设置为NA,那么缺失值被移除;如果设置为keep,那么排名为NA。
#ties.method :控制如何对待tie,一个tie是指值重复的元素。

r1 <- rank(x1 <- c(3, 1, 4, 15, 92))
#[1] 2 1 3 4 5

五,替换

函数replace()用于把向量中指定位置的元素替换为指定的值(或向量):

replace(x, list, values)

参数注释:

  • list:整数向量,指定被替换的元素的位置
  • values:替换的值(或向量)
> replace(1:9,c(1,3,7),0)
#[1] 0 2 0 4 5 6 0 8 9

六,重复

功能:rep()函数把输入的参数重复多次,如果参数是表达式,rep()函数会把表达式的结果重复多次;而replicate()函数是重复调用表达式。

> rep(runif(1),5)
#[1] 0.8721105 0.8721105 0.8721105 0.8721105 0.8721105
> replicate(5,runif(1))
#[1] 0.9426709 0.1280271 0.1926333 0.7091503 0.5404846

七,逆转

功能:rev()函数用于把一个向量的元素逆转

> rev(c(1,5,3,7))
#[1] 7 3 5 1

八,排序

功能:sort()函数用于对向量排序,返回有序的向量;order()函数返回向量元素的序号,能够用于对data.frame排序

order(..., na.last = TRUE, decreasing = FALSE, method = c("auto", "shell", "radix"))
sort(x, decreasing = FALSE, na.last = NA, ...)
     
df <- data.frame(x=c(6,3,7,5),y=c(5,1,7,3))
df[order(df$y),]
   x y
2 3 1
4 5 3
1 6 5
3 7 7

九,删除重复值

功能:第一种做法是把返回向量中的唯一值;第二个方法是返回向量中重复元素的位置,然后删除重复元素。

9.1,删除重复值

#unique() 函数用于移除重复数据,用于向量,数据框或数组的去重
unique(x, incomparables = FALSE)

9.2,检查重复值

#duplicated()函数用于检查重复的元素,返回元素类型是逻辑值的向量或数据框:当元素的值为FALSE时,表示该元素不是重复值;当元素的值是TRUE时,表示该元素是前面(位置)的某一个元素的重复值。
#duplicated(x, incomparables = FALSE, ...)
df <- df[!duplicated(df$var),]

十,逻辑TRUE的索引

功能:which()函数,用于从逻辑向量中返回TRUE值在向量中的索引,参数x是一个由逻辑值构成的向量

which(x)
> which(lv <- c(TRUE, FALSE, TRUE, NA, FALSE, FALSE, TRUE))
[1] 1 3 7
> which(exper <- c(1:9)>5)
[1] 6 7 8 9

十一,构造环境

#数据框,使R表达式位于数据框的作用环境中,便于对数据框变量的引用

with(data, expr, ...)
within(data, expr, ...)
  
  with(mtcars, mpg[cyl == 8  &  disp > 350])
#only define one variable
mtcars$mpg[mtcars$cyl == 8  &  mtcars$disp > 350]

#define  multiple variables
aq <- within(airquality, {     # multiple vars can be changed
    lOzone <- log(Ozone)
    Month <- factor(month.abb[Month])
    cTemp <- round((Temp - 32) * 5/9, 1) 
    S.cT <- Solar.R / cTemp  # using the newly created variable
    rm(Day, Temp)
})

十二,Reduce函数

功能:Reduce()函数对一个向量循环执行函数(该函数有两个参数)

Reduce(f, x, init, right = FALSE, accumulate = FALSE)

参数注释:

  • f :有两个参数的函数对象
  • x:向量
  • init :一个标量值,类型和x向量的元素相同;
  • right :逻辑值,当值为FALSE时,从向量的左侧开始,依次向右侧取出元素传递到给函数;当值为TRUE时,从向量的右侧开始,依次向左侧取出元素,传递给函数;
  • accumulate:逻辑值,a logical indicating whether the successive reduce combinations should be accumulated. By default, only the final combination is used.
> Reduce(sum,1:5,10)
[1] 25

十三,条件过滤器

功能:按照条件从向量中选择元素,当条件为TRUE时,把该元素添加到结果向量中。参数 f 是一个返回逻辑值的函数(该函数必须有一个输入参数),参数x是一个向量。

Filter(f, x)

> fx <- function(x) x>5;
> Filter(fx,1:10)
[1]  6  7  8  9 10

十四,计算累加

功能:使用cumsum(x)来计算向量元素的累加值,累加的计算过程是迭代的

> cumsum(1:5)
[1]  1  3  6 10 15

十五,计数出现的次数(tabulate)

功能:tabulate()函数的作用是使用bin构造整数向量v,并计算bin中每个整数在v中出现的次数。

tabulate(bin, nbins = max(1, bin, na.rm = TRUE))
> tabulate(bin = c(2,3,3,5))
#[1] 0 1 2 0 1

十六,diff

功能:函数计算向量相邻元素之间的差异,后者减去前者

d= c(10,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,10)
diff(d)
[1] -9  0  0  0  0  0  1 -1  0  0  0  0  0  0  2  7

相关推荐

或者这些Joplin插件也可以帮助你的笔记应用再一次强大

写在前面距离上次分享《搭建私有全平台多端同步笔记,群晖NAS自建JoplinServer服务》已过去一段时间,大家是否开始使用起来了呢?如果你和我一样已经使用过Joplin有一段时间了,那或许你也会...

Three.JS教程4 threejs中的辅助类

一、辅助类简介Three.js提供了一些辅助类(Helpers)以帮助我们更容易地调试、可视化场景中的元素。ArrowHelepr:创建箭头辅助器;AxisHelper:创建坐标轴辅助器;BoxH...

第2章 还记得点、线、面吗(二)(第二章还能敲钟吗)

glbgltf模型(webvrmodel)-gltf模型下载定制,glb模型下载定制,三维项目电商网站在线三维展示,usdz格式,vr模型网,网页VR模型下载,三维模型下载,webgl网页模型下载我...

如何检查Linux系统硬件信息?从CPU到显卡,一网打尽!

你可能会问:“我为什么要关心硬件信息?”答案很简单:硬件是Linux系统的根基,了解它可以帮你解决很多实际问题。比如:性能调优:知道CPU核心数和内存大小,才能更好地调整程序运行参数。故障排查:系统卡...

SpriteJS:图形库造轮子的那些事儿

从2017年到2020年,我花了大约4年的时间,从零到一,实现了一个可切换WebGL和Canvas2D渲染的,跨平台支持浏览器、SSR、小程序,基于DOM结构和支持响应式的,高...

平时积累的FPGA知识点(6)(fpga经典应用100例)

平时在FPGA群聊等积累的FPGA知识点,第六期:1万兆网接口,发三十万包,会出现掉几包的情况,为什么?原因:没做时钟约束,万兆网接口的实现,本质上都是高速serdes,用IP的话,IP会自带约束。...

芯片逻辑调度框架设计 都需要那些那些软件工具

设计芯片逻辑调度框架通常需要使用以下软件工具:1.逻辑设计工具:例如Vivado、Quartus、SynopsysDesignCompiler等,用于设计和实现逻辑电路。2.仿真工具:例如Mo...

ZYNQ与DSP之间EMIF16通信(正点原子领航者zynq之fpga开发指南v3)

本文主要介绍说明XQ6657Z35-EVM高速数据处理评估板ZYNQ与DSP之间EMIF16通信的功能、使用步骤以及各个例程的运行效果。[基于TIKeyStone架构C6000系列TMS320C6...

好课推荐:从零开始大战FPGA(从零开始的冒险4399)

从零开始大战FPGA引子:本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“...

业界第一个真正意义上开源100 Gbps NIC Corundum介绍

来源:内容由「网络交换FPGA」编译自「FCCM2020」,谢谢。FCCM2020在5月4日开始线上举行,对外免费。我们有幸聆听了其中一个有关100G开源NIC的介绍,我们对该文章进行了翻译,并对其中...

高层次综合:解锁FPGA广阔应用的最后一块拼图

我们为什么需要高层次综合高层次综合(High-levelSynthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++...

Xilinx文档编号及其内容索引(部分)

Xilinx文档的数量非常多。即使全职从事FPGA相关工作,没有几年时间不可能对器件特性、应用、注意事项等等有较为全面的了解。本文记录了我自使用Xilinx系列FPGA以来或精读、或翻阅、或查询过的文...

Xilinx Vivado联合Modelsim软件仿真

引言:Xilinx公司Vivado开发软件自带仿真工具,可以实现一般性能的FPGA软件仿真测试,其测试执行效率以及性能都不如第三方专用仿真软件Modelsim强。本文我们介绍下如何进行Vivado20...

体育动画直播是怎么做出来的?从数据到虚拟赛场的科技魔法!

你是否见过这样的比赛直播?没有真实球员,却能看梅西带球突破?足球比赛变成动画版,但数据100%真实?电竞比赛用虚拟形象直播,选手操作实时同步?这就是体育动画直播——一种融合实时数据、游戏引擎和AI的...

Dialogue between CPC and political parties of neighboring countries held in Beijing

BEIJING,May26(Xinhua)--TheCommunistPartyofChina(CPC)inDialoguewithPoliticalPartiesof...