R语言常用函数整理(基础篇)

R语言常用函数整理(基础篇),第1张

R语言常用函数整理本篇是基础篇,即R语言自带的函数。

vector:向量
numeric:数值型向量
logical:逻辑型向量
character;字符型向量
list:列表
dataframe:数据框
c:连接为向量或列表
length:求长度
subset:求子集
seq,from:to,sequence:等差序列
rep:重复
NA:缺失值
NULL:空对象
sort,order,unique,rev:排序
unlist:展平列表
attr,attributes:对象属性
mode,class,typeof:对象存储模式与类型
names:对象的名字属性

字符型向量 nchar:字符数
substr:取子串 format,formatC:把对象用格式转换为字符串
paste()、paste0()不仅可以连接多个字符串,还可以将对象自动转换为字符串再相连,另外还能处理向量。
strsplit:连接或拆分
charmatch,pmatch:字符串匹配
grep,sub,gsub:模式匹配与替换

complex,Re,Im,Mod,Arg,Conj:复数函数

factor:因子 codes:因子的编码 levels:因子的各水平的名字 nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子
table:交叉频数表 split:按因子分组 aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数

devnew() 新建画板
plot()绘制点线图,条形图,散点图
barplot( ) 绘制条形图
dotchart( ) 绘制点图
pie( )绘制饼图
pair( )绘制散点图阵
boxplot( )绘制箱线图
hist( )绘制直方图
scatterplot3D( )绘制3D散点图

par()可以添加很多参数来修改图形
title( ) 添加标题
axis( ) 调整刻度
rug( ) 添加轴密度
grid( ) 添加网格线
abline( ) 添加直线
lines( ) 添加曲线
text( ) 添加标签
legend() 添加图例

+, -, , /, ^, %%, %/%:四则运算 ceiling,floor,round,signif

1、round() #四舍五入

例:x <- c(31416, 15377, 2697)

round(x, 0) #保留整数位

round(x, 2) #保留两位小数

round(x, -1) #保留到十位

2、signif() #取有效数字(跟学过的有效数字不是一个意思)

例:略

3、trunc() #取整

floor() #向下取整

ceiling() #向上取整

例:xx <- c(360, 1247, -360, -1247)

trunc(xx)

floor(xx)

ceiling(xx)

max,min,pmax,pmin:最大最小值
range:最大值和最小值 sum,prod:向量元素和,积 cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx fun:插值 diff:差分 sign:符号函数

abs,sqrt:绝对值,平方根
log, exp, log10, log2:对数与指数函数
sin,cos,tan,asin,acos,atan,atan2:三角函数
sinh,cosh,tanh,asinh,acosh,atanh:双曲函数
beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数

fft,mvfft,convolve:富利叶变换及卷积
polyroot:多项式求根
poly:正交多项式
spline,splinefun:样条差值
besselI,besselK,besselJ,besselY,gammaCody:Bessel函数
deriv:简单表达式的符号微分或算法微分

array:建立数组
matrix:生成矩阵
datamatrix:把数据框转换为数值型矩阵
lowertri:矩阵的下三角部分
matorvec:生成矩阵或向量
t:矩阵转置
cbind:把列合并为矩阵
rbind:把行合并为矩阵
diag:矩阵对角元素向量或生成对角矩阵
aperm:数组转置
nrow, ncol:计算数组的行数和列数
dim:对象的维向量
dimnames:对象的维名
rownames,colnames:行名或列名
%%:矩阵乘法
crossprod:矩阵交叉乘积(内积)
outer:数组外积
kronecker:数组的Kronecker积
apply:对数组的某些维应用函数
tapply:对“不规则”数组应用函数
sweep:计算数组的概括统计量
aggregate:计算数据子集的概括统计量
scale:矩阵标准化
matplot:对矩阵各列绘图
cor:相关阵或协差阵
Contrast:对照矩阵
row:矩阵的行下标集
col:求列下标集

solve:解线性方程组或求逆
eigen:矩阵的特征值分解
svd:矩阵的奇异值分解
backsolve:解上三角或下三角方程组
chol:Choleski分解
qr:矩阵的QR分解
chol2inv:由Choleski分解求逆

><,>,<=,>=,==,!=:比较运算符 !,&,&&,|,||,xor():
逻辑运算符 logical:
生成逻辑向量 all,
any:逻辑向量都为真或存在真
ifelse():二者择一 match,
%in%:查找
unique:找出互不相同的元素
which:找到真值下标集合
duplicated:找到重复元素

optimize,uniroot,polyroot:一维优化与求根

if,else,
ifelse,
switch:
分支 for,while,repeat,break,next:
循环 apply,lapply,sapply,tapply,sweep:替代循环的函数。

function:函数定义
source:调用文件 ’
call:函数调用
C,Fortran:调用C或者Fortran子程序的动态链接库。
Recall:递归调用
browser,debug,trace,traceback:程序调试
options:指定系统参数
missing:判断虚参是否有对应实参
nargs:参数个数 stop:终止函数执行
onexit:指定退出时执行 eval,expression:表达式计算
systemtime:表达式计算计时
invisible:使变量不显示
menu:选择菜单(字符列表菜单)

其它与函数有关的还有:
delay,
deleteresponse,
deparse,
docall,
dput,
environment ,
formals,
formatinfo,
interactive,
isfinite,
isfunction,
islanguage,
isrecursive ,
matcharg,
matchcall,
matchfun,
modelextract,
name,
parse 函数能将字符串转换为表达式expression
deparse 将表达式expression转换为字符串
eval 函数能对表达式求解
substitute,
sysparent ,
warning,
machine

cat,print:显示对象
sink:输出转向到指定文件
dump,save,dput,write:输出对象
scan,readtable,readlines, load,dget:读入

ls,objects:显示对象列表
rm, remove:删除对象
q,quit:退出系统
First,Last:初始运行函数与退出运行函数。
options:系统选项
,help,helpstart,apropos:帮助功能
data:列出数据集
head()查看数据的头几行
tail()查看数据的最后几行

每一种分布有四个函数:
d―density(密度函数),p―分布函数,q―分位数函数,r―随机数函数。
比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下面我们列出各分布后缀,前面加前缀d、p、q或r就构成函数名:

norm:正态,
t:t分布,
f:F分布,
chisq:卡方(包括非中心)
unif:均匀,
exp:指数,
weibull:威布尔,
gamma:伽玛,
beta:贝塔
lnorm:对数正态,
logis:逻辑分布,
cauchy:柯西,
binom:二项分布,
geom:几何分布,
hyper:超几何,
nbinom:负二项,
pois:泊松
signrank:符号秩,
wilcox:秩和,
tukey:学生化极差

sum, mean, var, sd, min, max, range, median, IQR(四分位间距)等为统计量,
sort,order,rank与排序有关,
其它还有ave,fivenum,mad,quantile,stem等。

R中已实现的有chisqtest,proptest,ttest。

cor,covwt,var:协方差阵及相关阵计算
biplot,biplotprincomp:多元数据biplot图
cancor:典则相关
princomp:主成分分析
hclust:谱系聚类
kmeans:k-均值聚类
cmdscale:经典多维标度
其它有dist,mahalanobis,covrob。

ts:时间序列对象
diff:计算差分
time:时间序列的采样时间
window:时间窗

lm,glm,aov:线性模型、广义线性模型、方差分析

quo()等价于quote()
enquo()等价于substitute()

用法:assign(x, value, pos = -1, envir = asenvironment(pos),  inherits = FALSE, immediate = TRUE)

assign函数在循环时候,给变量赋值。

举例说明:

1、

for (i in 1:(length(rowSeq)-1)){

  assign(paste("nginx_server_fields7_", i, sep = ""), nginx_server_fields7[(rowSeq[(i-1)+1]):(rowSeq[i+1]), ])

}

2、

for (i in 1:3){

    assign(paste("a", i, sep = ""), i:10)

}

ls()

[1] "a1" "a2" "a3" "i"

> a1

[1]  1  2  3  4  5  6  7  8  9 10

> a2

[1]  2  3  4  5  6  7  8  9 10

>a3

[1] 3  4  5  6  7  8  9 10

1、paste函数可用于字符串连接

用法:paste (, sep = " ", collapse = NULL),分隔符默认为空格

我们简单举个例子

1)paste("a","b") ##能连接a b

[1] "a b"

paste("a","b","c")

[1] "a b c"

2)设置分隔符paste("a","b",sep="=") ##注意到用等号分隔了

[1] "a=b"

3)连接多个元素paste("a",1:5,sep="") ##会自动每个元素与a相连

[1] "a1""a2""a3""a4""a5"

4)paste("a",1:5,"pdf",sep="") ##比如想批量输出文件名

[1] "a1pdf""a2pdf""a3pdf""a4pdf""a5pdf"、

2、collapse参数

谢益辉大佬说这个参数引无数英雄竞折腰啊,大家只会sep

1)paste("a",1,collapse="+") ##注意到了吧,collapse没用上

[1] "a 1"

2)paste(c("a","b","c"),collapse="+") ##这样就很容易理解了,collapse折叠起了元素

[1] "a+b+c"

3)paste("a",1:5,sep="") ##再来更明显的举例

[1] "a1""a2""a3""a4""a5"

4)paste("a",1:5,sep="",collapse="+") ##先在元素间连接,然后折叠

[1] "a1+a2+a3+a4+a5"

3、与paste0函数的区别

paste0函数,默认sep=""是两个函数唯一的区别

paste(c("a","b","c"),1:3)##默认空格符

[1] "a 1""b 2""c 3"

paste(c("a","b","c"),1:3,sep=" ")

[1] "a 1""b 2""c 3"

paste(c("a","b","c"),1:3,sep="")

[1] "a1""b2""c3"

如果两个向量长度不同paste(c("a","b","c"),1:5) ##超出范围后继续从前向后连接

[1] "a 1"  "b 2"  "c 3"  "a 4"  "b 5"

paste0(c("a","b","c"),1:3)#默认元素连接为sep=""

[1] "a1""b2""c3"

用法:unlist()函数的作用,就是将list结构的数据du,变zhi成非list的数据,即将list数据变成 字符串向量 或者数字向量的形式

如果是向量的话就直接输出向量

例子:

%in%相当于match()函数的一个缩写。用来判断一个数组或矩阵是否包含在另一个数组或矩阵里。举个例子一目了然:

#首先复制两个变量a和b

>a <- 1:5

>b <- 3:7

>a %in% b    #看a的元素是否包含在b中输出结果如下:

[1] FALSE FALSE  TRUE  TRUE  TRUE

用法:apply(x, MARGIN, FUN, )

作用:对 矩阵 的行或列使用函数,或者对 数组 的各个维度使用函数

x为数据对象,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列,FUN是自己指定的任意或自定义函数

注:数据框dataframe也可以使用apply函数,该函数会自动将数据框转化为矩阵,但前提是数据框中各列的数据类型 必须是数值型,否则会报错。
用法:lapply(x,FUN,)

作用:对列表中的各个元素使用函数

x是格式为列表的数据源,FUN是任意函数。
intersect(data1,data2):交集

union(data1,data2):并集

1数组简介
array(data , dim, dimnames )
只能包含一种数据类型
Arguments

1列表简介
list()
list()包含任何类型的对象
Example

2列表访问(索引)

Usage
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = isordered(x), )
因子是用来存储类别向量和有序变量,而不能用来计算
Arguments

1Linux与R的学习先后问题:

师姐说后面作生信分析要用Linux环境进行数据集群分析,所以目前首要任务是熟悉R语言和Python的 *** 作,后面转到Linux环境运行 *** 作大同小异。

2R及Rstudio的安装问题:

装了Rstudio之后显示没有装R,解决方案是R和Rstudio安装时选择默认路径,是这两个软件装在同一个目录下。

3输入demo()后显示

> demo()

Warning message:

In fileshow(outFile, deletefile = TRUE, title = paste("R", tolower(x$title))) :

  fileshow():不存在'C:\Users\灏忔湪浜榎AppData\Local\Temp\RtmpENM66s\RpackageIQR28b82f592cbb'这个文件

(1)找出问题:R存在一个中文目录底下,会出现错误,所以首先第一步要将文件名(即user底下的名字)改为英文的(注:以后文件名尽量设置为英文的,才方便识别)

(2)解决问题:因为win为家庭版,所以没有在计算机管理中没有找到本地用户和组,借鉴了CSDN论坛中一位大神经验贴的后半部分 设置Win10如何更改C:\Users\下的用户名_胡振涛-CSDN博客_如何更改users下的用户名 ,从win+R输入regedit(打开注册表)那块开始,后面将自己中文的文件名改成英文就好了,然后注销再打开,运行R后,输入demo(),显示界面如下图。

4options()是个啥,没整明白?

   options:指定系统参数

5 runif()函数

    runif (random samples from uniform distribution)  均匀分布中的随机变量

    例如:runif(242, min =-03,max=03) 从-03 到03 随机产生242个值

6包及库
           1——已经安装的包

           2——用来放R安装时自带的包(如base,state等)

7函数括号内加“”的规律:外部的东西要加引号。安装以后内部的东西不用加引号。

8批处理命令打出来很奇怪?
9返回值?——一个运算函数被赋予具体数据后得到值return到这个函数变量上( *** 作型函数没有返回值)

10help(package="vcd"/"ggplot2"),命令后help界面无显示

未找到问题原因,解决方案为在CRAN上直接看好了。

11安装ggplot2包后,输入library(ggplot2),没有反应——说明你装上了。。(有些包library成功是没有输出的)
相反的是可以看到如果安装的是tidyverse,输入library(tidyverse),是有输出的
12Rstudio工作路径&库安装路径修改(我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Rstudio更改工作路径&安装包路径》, 一起来围观吧 >这是最后一篇讲解有关矩阵 *** 作的博客,介绍有关矩阵的函数,主要有 rowSums() , colSums() , rowMeans() , colMeans() , apply() , rbind() , cbind() , row() , col() , rowsum() , aggregate() , sweep() , maxcol() 。

下面通过例子来了解这些函数的用法:

我们知道,通过下标索引 [i, j] 可以访问矩阵的某一部分,索引如果没有提供意味着“所有行”或“所有列”。来看个例子,比如:

在R中,可以用一些特殊的函数来进行矩阵的行、列计算。来看些例子:

上述矩阵的行、列计算,还可以使用 apply() 函数来实现。 apply() 函数的原型为 apply(X, MARGIN, FUN, ) ,其中: X 为矩阵或数组; MARGIN 用来指定是对行运算还是对列运算, MARGIN=1 表示对行运算, MARGIN=2 表示对列运算; FUN 用来指定运算函数; 用来指定 FUN 中需要的其它参数。来看些例子:

用 apply() 函数来实现上面的例子

apply() 函数功能很强大,我们可以对矩阵的行或列进行其它运算,例如:

如果矩阵存在 NA 值,可通过设置 narm=TRUE 来忽略 NA 值,然后再计算。比如:

甚至我们还可以自定义运算函数,来看个例子:

在R中, rbind() 和 cbind() 函数可分别为矩阵添加行和列,来看一个例子:

在R中, row() 和 col() 函数将分别返回元素的行和列下标矩阵,来看个例子:

通过这两个函数,可以获取矩阵的对角元素以及上下三角矩阵,例如:

有时,你可能需要对每行进行分组,然后组内每列求和。在R中可以用 rowsum() 函数来解决,而且效率也非常高。先看个例子:

你也可以用 aggregate() 函数获得类似结果:

有人就会问“为啥没有列分组求和的 *** 作?”,其实你可以先将矩阵转置,然后行分组求和;这两步就等同于列分组求和。

sweep() 函数的原型为 sweep(x, MARGIN, STATS, FUN = "-", checkmargin = TRUE, ) ,其中: x 为矩阵或数组; MARGIN 用来指定是对行运算还是对列运算, MARGIN=1 表示对行运算, MARGIN=2 表示对列运算; STATS 表示想要清除的统计量; FUN 用来指定运算函数,默认为减法 - ; checkmargin 用来核实 x 的维度是否与 STATS 的匹配,如果事先知道它们匹配的话,将其设为 FALSE 将提高运算速度; 用来指定 FUN 中需要的其它参数。来看些例子:

事实上,通过改变 FUN 参数的具体形式或自定义函数, sweep() 函数可以实现很多不同 *** 作,这里就不细讲了。

maxcol() 函数返回矩阵每行最大值所在的列位置(即列下标),其原型为 maxcol(m, tiesmethod = c("random", "first", "last")) ,其中: m 为矩阵;当存在多个最大值时, tiesmethod 指定用哪种方式来处理这种情况,默认为"random"(随机),"first"指使用第一个最大值,"last"指使用最后一个最大值。来看个官网例子:

我们也可以结合 apply() 和 whichmax() 函数来实现 maxcol(mm, 'first') 。看个例子,

R矩阵的最后一部分内容就讲到这。

如若有遗漏,后期将会添加至本博客。

r语言中添加新列的方法:

假设你数据是data,那么前几列的和是rowSums(data);

然后你可以重新做一个dataframe

data_new<-dataframe(data,sum=rowSums(data))

R语言Data Frame数据框常用 *** 作:

Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。

Data Frame每一列有列名,每一行也可以指定行名。如果不指定行名,那么就是从1开始自增的Sequence来标识每一行。

使用dataframe函数就可以初始化一个Data Frame。比如我们要初始化一个student的Data Frame其中包含ID和Name还有Gender以及Birthdate,那么代码为:

student<-dataframe(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"),Gender=c("M","M","F"),Birthdate=c("1984-12-29","1983-5-6","1986-8-8”))

另外也可以使用readtable() readcsv()读取一个文本文件,返回的也是一个Data Frame对象。读取数据库也是返回Data Frame对象。

查看student的内容为:

ID   Name Gender  Birthdate

1   11  Devin       M 1984-12-29

2   12 Edward     M   1983-5-6

3   13  Wenli       F   1986-8-8

这里只指定了列名为ID,Name,Gender和Birthdate,使用names函数可以查看列名,如果要查看行名,需要用到rownames函数。这里我们希望将ID作为行名,那么可以这样写:

rownames(student)<-student$ID

摘自: >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13347583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存