R语言入门——常用函数50个_r语言函数-程序员宅基地

技术标签: r语言  R语言入门  入门函数  

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语言。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。当然如果有更好的改进方案欢迎评论区交流。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46111814/article/details/120113354

智能推荐

STL中迭代器的实现_stl迭代器实现-程序员宅基地

文章浏览阅读1.8w次,点赞6次,收藏21次。 STL中迭代器的实现junguo 最近在看候捷先生的《STL源码剖析》,侯先生写的挺好的。但我读起来总感觉有些拗,理解起来有些费劲,可能他看问题的观点和我不一样造成的。开始的时候总是不太理解,后来理顺了自己的思路,发现有些东西其实并不难。在此把我对迭代器的理解整理一下,也是帮助自己消化一下,因为我发现不动手,很多东西容易遗忘。 文章里提供的一些例子程序是在D_stl迭代器实现

14、详解java同步工具类CountDownLatch_java coundlash-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏37次。这篇文章主要讲解java中一个比较常用的同步工具类CountDownLatch,不管是在工作还是面试中都比较常见。我们将通过案例来进行讲解分析。一、定义CountDownLatch的作用很简单,就是一个或者一组线程在开始执行操作之前,必须要等到其他线程执行完才可以。我们举一个例子来说明,在考试的时候,老师必须要等到所有人交了试卷才可以走。此时老师就相当于等待线程,而学生就好比是执行的线程。注..._java coundlash

顺序性容器(vector&list&deque)_vector list 赋值顺序-程序员宅基地

文章浏览阅读313次。引言(1)vector向量相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存_vector list 赋值顺序

cube/SSAS 数据级权限解决方案----不使用域身份验证-程序员宅基地

文章浏览阅读301次。一个多月没更新博客了,不是不想写而是真的没有什么高质量的文章与大家分享,最近在做一个集团公司的BI解决方案,客户提出了一个合理但是又比较棘手的一个问题,就是北京的经理和南京的经理都有权限访问公司内部的报表,但是需要对其进行透明化的权限区分,北京的区域经理不能浏览任何关于南京区域的销售信息。这个需求是很合理的,但是客户方不一定会在一个域中,也就是这个经理可能到美国到非洲(呵呵,当然这是比喻..._没有加域怎么连ssas

gradle下载的缓存路径-程序员宅基地

文章浏览阅读368次。为什么80%的码农都做不了架构师?>>> ..._download_jsc.gradle下载路径

如何在iPhone或iPad上安装iOS 11 Beta-程序员宅基地

文章浏览阅读2.6k次。The public beta of iOS 11 is now available for iPhones and iPads. Anyone who wants to play withiOS 11’s new featurescan install it today. However, we recommend backing up your device first so you ca..._ios11bate

随便推点

python求解整数规划_如何用python结合cplex求解混合整数规划问题-程序员宅基地

文章浏览阅读1.4k次。第一步:注册IBM id账号第二步:下载相关系统的CPLEX(windows/linux/mac)这里需要系统中安装有JAVA,选择 open with Java web start launcher (需要下载JAVA),打开后就开始进入下载页面。补充JAVA安装:备注:JAVA可以通过rpm包安装,或者是bin文件安装。Rpm安装可以直接双击就可以打开jnlp后缀的文件,bin文件安装的话,需..._cplex求解双目标混合整数规划模型

CentOS 7.X 源码编译安装MariaDB-10.2.X_group ‘mail’ not found-程序员宅基地

文章浏览阅读2.5k次。CentOS 7 编译安装MariaDB-10.2.XCentOS 7下mariadb-10.1.22 源码编译安装过程笔记,希望对大家有帮助。 下载文件https://mariadb.com/ 或 https://downloads.mariadb.org/mariadb/10.2.11/
源码包的下载下载链接: https://mirrors.tuna.tsinghua.edu.cn/m_group ‘mail’ not found

wps中的大客户版本_wps 大客户版-程序员宅基地

文章浏览阅读462次,点赞11次,收藏8次。网上的WPS各个版本基本都带有稻香插件,广告一堆堆,用户需要注册才能减少广告的显示,但依然时不时跳出来显示。其实WPS给大学做过一些版本,这种定制版本应用于大学院系的文档编写使用。最关键的是这个版本没有广告,没有稻香,没有推荐模板,只有纯净的WPS。界面虽然不华丽,风格还是很传统office2000风格,不是烦人的多标签页,也不会隐藏。工具栏不会藏着掖着直接横排展示所有图标,鼠标不用切换页,所有工具一目了然。这集美大学版本是办公软件的不二之选。_wps 大客户版

Android自动化页面测速在美团的实践-程序员宅基地

文章浏览阅读587次,点赞8次,收藏19次。我们都知道ViewPager的Tab切换是可以通过一个 OnPageChangeListener 对象进行监听的,所以我们可以为ViewPager添加一个自定义的Listener对象,在切换时记录一个时间,这样可以通过用这个时间减去页面创建后的时间得出这个多余的等待时间,上报时在总时间中减去即可。这里的 getConfigModel() 方法中,会使用页面的类名或者全路径类名,去初始化时解析的配置Map中进行id的匹配,如果匹配到说明页面需要测速,就会创建测速对象 PageObject 进行测速。

百度竞价悄然改版-程序员宅基地

文章浏览阅读42次。前段时间百度因为“魏则西事件”而被要求整改,百度的竞价排名也被推向了风口浪尖。最近有网友@闪电精灵SEO张扬爆料:百度竞价已改版,竞价显示4条,或许取消了右侧排名! 但是在经过风波之后,百度的确有了一些变化,最明显的变化就是对推广的网站的标注,之前的对百度推广只有推广两个字,现在是成了蓝色..._python 百度竞价排名

《剑指offer》学习笔记_面试题35_复杂链表的复制-程序员宅基地

文章浏览阅读334次。题目描述 请实现一个函数,复制一个复杂链表。在复杂链表中,每个节点除了一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者为空。 思路 1.分治先复制当前的节点,然后递归的分别复制next或random。在复制next和random的过程中会重复复制相同节点,因此需要一个map来记录当前的复制情况。2.拆分法首先,将复制节点拼接到原始节点的...

推荐文章

热门文章

相关标签