R语言入门——常用函数50个

Posted 统计学小王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言入门——常用函数50个相关的知识,希望对你有一定的参考价值。

0引言

入门一门语言除了了解基本的函数流程框架以及编程逻辑,还需要掌握一定量的函数,本文总结了一些R语言常用的和函数,配套的有使用技巧和函数的使用实例,由于篇幅原因每个函数的解释详略可能控制不好,有需要的读者可以自行的去帮助文档以及互联网上搜集资料。

1、入门准备操作及函数

1.1R版本介绍以及IDE的选择

下面是我使用R的版本信息:

R version 3.6.2 (2019-12-12) -- "Dark and Stormy Night"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R的版本更新的是比较快的,但是主要的更新不大。我这是2019年3.6.2的版本了,大家使用最新的就行,一般的基础函数或者只要不是最新的包基本不会有太大的问题。

1.2IDE及其常用的快捷键

IDE我一般使用过RGuiRstudioR-Tinnjupyter notebook,当然除了这些IDE还有很多。我经常使用的是RGui,写markdown或者需要复杂的环境的时候会使用Rstudio
下面说一下编程时候的常用的快捷键,不会太全,只是我自己时常使用的而已。
– ctrl+L:清空控制台
– ctrl+R:运行代码
– ctrl+A:全选
– ctrl+S:保存
– ctrl+C、V:CV大法
注:单独运行某一行时不需要选中,只需要光标再需要运行的那一行就行。

2、空间操作以及纠错函数

入门R语言免不了读取外部数据,设置路径。这里介绍一下主要使用的函数。这是去年写的关于数据读取的一篇博文,又需要可以移步去看:R语言入门——数据快速读取与查看(含实例代码和参数讲解)

2.1 ? 、??、help、demo、example

第一介绍的函数是三个帮助函数:?、 ??、 help,区别是:是常用的帮助函数,用来打开某个函数说明书。但是当你知道的信息很模糊的时候可以使用??来查看是否有类似或者相近的函数或者包,而help函数则可以指定一些更加多的参数。
下面是help的参数

> help
function (topic, package = NULL, lib.loc = NULL, verbose = getOption("verbose"), 
    try.all.packages = getOption("help.try.all.packages"), 
    help_type = getOption("help_type"))

当然在打开help之前,可以直接运行函数名,也可以得到很多函数使用的信息。

2.2 ls()

函数ls()可以用来查看目前空间变量,也可以使用ls函数查看某个包里的所有函数:用户方法是:ls("package:ggplot2")

> head(ls("package:ggplot2"),20)
 [1] "%+%"                 "%+replace%"          "aes"                
 [4] "aes_"                "aes_all"             "aes_auto"           
 [7] "aes_q"               "aes_string"          "after_scale"        
[10] "after_stat"          "alpha"               "annotate"           
[13] "annotation_custom"   "annotation_logticks" "annotation_map"     
[16] "annotation_raster"   "arrow"               "as_label"           
[19] "as_labeller"         "autolayer"     

ggplot2包里目前有500多个函数,由于篇幅原因使用head函数只展示前20个函数。

2.3 getwd()、setwd()

这是两个可以查看和改变路径的函数。但是我一般不适用这两个函数管理路径,会使用空的.RData文件和相对路径去设置路径。

2.4 其他函数

– source:载入自编函数和包
– install.packages:安装大部分的cran包,别忘记选择一个离自己进的路径就行。一般只安装一次、以后使用只需要载入。
– library:载入已经安装的包,每次的重启代码都需要载入、
– require:判断包是否加载,否就是直接加载。并返回T,若不存在则返回F。
– rm:移除空间已经有的变量。
– # :代码注释

2.5大量数据空间管理

如果有需要大量的数据需要加载,可以参考下面的博客:2021美赛准备——内存管理(R语言)

3、常用数据结构的创建

有了上述的只是想要进行运算需要会创建一些基本的数据。

3.1向量的创建c、scan、rep、seq、:

函数c、scan、rep、seq、:是常用的创建变量的函数。下面给出例子:

> x1 <- c(15, 6, 265, 6)
> x1
[1]  15   6 265   6
> x2 <- scan()
1: 5 5 54 8 456456 
6: 
Read 5 items
> x2  # 上一行的空行不能删掉
[1]      5      5     54      8 456456
> x3 <- rep(1:3, 2)
> x3
[1] 1 2 3 1 2 3
> x4 <- seq(0, 10, 2)
> x4
[1]  0  2  4  6  8 10

3.2矩阵的创建matrix、as.matrix,diag、data.matrix、cbind、rbind、t

> A <- matrix(NA, 5, 5)
> A
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA
> B <- t(1:5)
> B
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
> C <- cbind(1:5)
> C
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
[5,]    5
> D <- rbind(1:5)
> D
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
> E <- as.matrix(data.frame(x = 1:5, y = 6:10))
> E
     x  y
[1,] 1  6
[2,] 2  7
[3,] 3  8
[4,] 4  9
[5,] 5 10
> diag(rep(1, 5))  # 对角矩阵
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    0    1    0    0    0
[3,]    0    0    1    0    0
[4,]    0    0    0    1    0
[5,]    0    0    0    0    1
> data.matrix(data.frame(x = 1:5, y = 6:10))
     x  y
[1,] 1  6
[2,] 2  7
[3,] 3  8
[4,] 4  9
[5,] 5 10

3.3 数据框的创建data.frame、as.data.frame

数据框和矩阵不同的是,数据框每列元素是一个变量可是字符型也可以是数值型也可是逻辑型等。是以中建模时候经常使用的数据类型。我日常中经常使用的数据结构是data.table包里的data.table数据类型,他本身带有数据框的特性,但是兼容很多数据变形数据和并等数据科学的操作,是一个比较方便的数据类型。

> data.frame(x = 1:5, 
+ y = paste0("z", 1:5),
+ z = (1:5) > 3
+ )
  x  y     z
1 1 z1 FALSE
2 2 z2 FALSE
3 3 z3 FALSE
4 4 z4  TRUE
5 5 z5  TRUE

3.4列表list、unlist

列表可用用来储存任何的数据类型,甚至是列表自己。下面展示给出实例:

> list(
+ x = data.frame(x = 1:5),
+ y = matrix(NA, 3, 3),
+ z = c(1:5),
+ d = factor(6:9),
+ r = list(x = 5, y = 6)
+ )
$x
  x
1 1
2 2
3 3
4 4
5 5

$y
     [,1] [,2] [,3]
[1,]   NA   NA   NA
[2,]   NA   NA   NA
[3,]   NA   NA   NA

$z
[1] 1 2 3 4 5

$d
[1] 6 7 8 9
Levels: 6 7 8 9

$r
$r$x
[1] 5

$r$y
[1] 6

3.5因子型factor、as.factor

在使用分类变量的时候会使用因子数据。创建方式也是比较简单的:

> factor(1:10)
 [1] 1  2  3  4  5  6  7  8  9  10
Levels: 1 2 3 4 5 6 7 8 9 10
> as.factor(rep(1:3, 5))
 [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
Levels: 1 2 3
> 

3.6数据的查看summary、str、dim、length、nrow、ncol、names、rownames、colnames、class

> (A <- matrix(NA, 5, 5))  # 赋值并输出
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA
> (B <- data.frame(x = 1:5, y = 6:10))
  x  y
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10
> class(A);class(B)
[1] "matrix"
[1] "data.frame"
> str(A); str(B)
 logi [1:5, 1:5] NA NA NA NA NA NA ...
'data.frame':   5 obs. of  2 variables:
 $ x: int  1 2 3 4 5
 $ y: int  6 7 8 9 10
> names(A); rownames(A); colnames(A)
NULL
NULL
NULL
> names(B); rownames(B); colnames(B)
[1] "x" "y"
[1] "1" "2" "3" "4" "5"
[1] "x" "y"
> dim(A);dim(B)
[1] 5 5
[1] 5 2
> length(A)
[1] 25
> summary(A)
    V1             V2             V3             V4             V5         
 Mode:logical   Mode:logical   Mode:logical   Mode:logical   Mode:logical  
 NA's:5         NA's:5         NA's:5         NA's:5         NA's:5        
> summary(B)
       x           y     
 Min.   :1   Min.   : 6  
 1st Qu.:2   1st Qu.: 7  
 Median :3   Median : 8  
 Mean   :3   Mean   : 8  
 3rd Qu.:4   3rd Qu.: 9  
 Max.   :5   Max.   :10

3.7小结论

以上每一个函数都是比较常用的函数,功能都很多,这里只是起到了抛砖引玉的作用,其他更有用的技能还是等着读者自己探索。

4、运算符和赋值函数

有了基本的数据类型,下面就可以对内部数据进行运算了。

4.1逻辑匹配 %in% match

这是一个逻辑运算符,可以判断两个对象值之前的单个元素是否属于另一个,返回逻辑值。

> 1:3 %in% 3:10
[1] FALSE FALSE  TRUE
> match(c(1, "TRUE"), c(T, 0, "1"))
[1] 3 1
> match(1:3, 3:10)
[1] NA NA  1

4.2赋值 = <- <<-

这三个都是赋值运算符号。=是传参,<-是赋值,<<-是全局赋值。原则是:
变量的创建赋值使用<-,函数的传参使用=,<<-非必要不推荐使用.

4.3逻辑运算 ==、 != 、>、 >= 、< 、<= 、is.na 、is.finite

逻辑运算符和其他语言的很相似这里就不在一一说明了。

4.4 + - * / ^ %% %*% %/% solve givn of MASS

R里的+-*/是对应元素的运算,而%*%,solve是矩阵运算。

4.5数学函数 abs sign acos

数学函数还是比较多的这里就不再标题里列出来了。具体函数还有:

sin cos tan asin acos atan atan2 
max min prob sum mean lenght sd var cor cov median 
pmax pmin range rel 
exp log log2 log10 sqrt
ceiling floor round trunc signif
diff cummax cummin  cumprob cumsum
all any which
intersect union setdiff setequal

大部分和数学符号很一直,这里具体介绍几个不常用的:

> round(x2, 3)  # 保留三位效数
[1]       0.031       3.142     314.159   31415.927 3141592.654
> signif(x2, 4)  # 4为有效数字的科学记数法
[1] 3.142e-02 3.142e+00 3.142e+02 3.142e+04 3.142e+06
> x <- sort(rnorm(100));  cH <- 0.5
> pmin(cH, quantile(x)) # no names
[1] -2.4357860 -0.6936559  0.1121157  0.5000000  0.5000000
> pmin(quantile(x), cH) # has names
        0%        25%        50%        75%       100% 
-2.4357860 -0.6936559  0.1121157  0.5000000  0.5000000 

5、循环+函数

5.1循环 for while repeat next break cat

循环函数在编程中还是比较常用的。
下面以for为例子给出实例:

> for(i in 1:10){
+   cat("正在处理第", i,"次 ... ...", "\\n")
+ }
正在处理第 1... ... 
正在处理第 2... ... 
正在处理第 3... ... 
正在处理第 4... ... 
正在处理第 5... ... 
正在处理第 6... ... 
正在处理第 7... ... 
正在处理第 8... ... 
正在处理第 9... ... 
正在处理第 10... ... 

5.2函数 function return missing on.exit

同样的给出函数和调用函数的例子:

> myfun <- function(n){
+   for(i in 1:n){
+     cat("正在处理第", i,"次 ... ...", "\\n")
+   }
+   return() 
+ }
> myfun(5)
正在处理第 1... ... 
正在处理第 2... ... 
正在处理第 3... ... 
正在处理第 4... ... 
正在处理第 5... ... 
NULL

6、总结

最后希望可以帮助大家学习R语言。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。当然如果有更好的改进方案欢迎评论区交流。

以上是关于R语言入门——常用函数50个的主要内容,如果未能解决你的问题,请参考以下文章

web前端开发JQuery常用实例代码片段(50个)

有没有办法将2个非常相似的代码片段组合成一个函数并重复?

R语言常用函数(基本)

21个常用代码片段

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

R语言实战应用精讲50篇(二十八)-大量代码示例带你从基础到高级(附R语言代码)