这篇文章记录的是在使用R的过程中偶然遇到的非常实用的函数,然而由于这些函数在自己的学习中太常用特别容易忘记,所以这里记下来以便以后使用的时候可以查看。学无止境,长期更新。
场景一
在查看多个变量之间的两两相关性的时候,可以使用picante包中的cor.table()函数。
场景二
在使用R时,library()函数,或者(.packages(all.available=TRUE))函数可以查看本地下载了哪些R包,当希望查看当前的R环境中都加载了哪些R包可以使用search()函数,或者(.packages())函数,或者find.package()函数,临时卸载某个R包可以使用函数detach(package:包名)。安装R包使用install.packages(‘包名’),删除R包使用remove.packages(“包名”)函数,用于更新R包使用update.packages()函数,查看已下载的所有R包的详细信息使用installed.packages()。查看某一个特定R包详细信息使用help(package=’包名’)
场景三
expand.grid()用来建立一些factor相乘出来的矩阵或data.frame。
expand.grid(x = c('A', 'B', 'C', 'D'), y = 1:3)
# x y
# 1 A 1
# 2 B 1
# 3 C 1
# 4 D 1
# 5 A 2
# 6 B 2
# 7 C 2
# 8 D 2
# 9 A 3
# 10 B 3
# 11 C 3
# 12 D 3
场景四
使用with()和within()函数对数据框列引用时,可以不用再输入长长的数据框名了。两者的区别在于,with只是生成了一列数据,而within生成一个包含原始数据的数据框。
with(dat, y + 2)
# [1] 4 5 6 7
within(dat, {z = y + 2; a = x + 3})
# x y a z
# 1 1 2 4 4
# 2 2 3 5 5
# 3 3 4 6 6
# 4 4 5 7 7
场景五
cut()函数可以把连续变量离散化,即numeric型的数据转换成factor型,可以与table()函数一起使用。
cut(x, breaks, labels = NULL,
include.lowest = FALSE, right = TRUE, dig.lab = 3,
ordered_result = FALSE, ...)
主要参数
x: 需要离散化的连续型向量
breaks: 向量类型,指定分类指标。默认的情况下,左开右闭合,这里可以结合正无穷(+Inf)和负无穷使用
labels:向量类型,指定分类指标的名称。如果不限定,则默认用分类指标为名称
inlude.lowest: 逻辑类型,指定边界是否闭合,默认的是边界不闭合
right: 逻辑类型,指定左开右闭合还是右开左闭合,默认的是TURE,左开右闭合
dig.lab: 数字,指定分类指标名称的数字位数。默认情况下,当labels为NULL时,指标名称的数字只显示3位
orederd_result: 逻辑类型,指定分类指标是否有序
cut(c(1,4, 5, 7, 9, 2, 4, 6, 8, 3, 1,7), breaks = c(1, 2.224, 5, Inf))
# [1] <NA> (2.22,5] (2.22,5] (5,Inf] (5,Inf] (1,2.22] (2.22,5] (5,Inf] (5,Inf] (2.22,5] <NA> (5,Inf]
# Levels: (1,2.22] (2.22,5] (5,Inf]
## 边界闭合,即包含左端的1
cut(c(1,4, 5, 7, 9, 2, 4, 6, 8, 3, 1,7), breaks = c(1, 2.224, 5, Inf), include.lowest = T)
# [1] [1,2.22] (2.22,5] (2.22,5] (5,Inf] (5,Inf] [1,2.22] (2.22,5] (5,Inf] (5,Inf] (2.22,5] [1,2.22] (5,Inf]
# Levels: [1,2.22] (2.22,5] (5,Inf]
## 左闭合右开
cut(c(1,4, 5, 7, 9, 2, 4, 6, 8, 3, 1,7), breaks = c(1, 2.224, 5, Inf), right = F)
# [1] [1,2.22) [2.22,5) [5,Inf) [5,Inf) [5,Inf) [1,2.22) [2.22,5) [5,Inf) [5,Inf) [2.22,5) [1,2.22) [5,Inf)
# Levels: [1,2.22) [2.22,5) [5,Inf)
## 指定分类名称
cut(c(1,4, 5, 7, 9, 2, 4, 6, 8, 3, 1,7), breaks = c(1, 2.224, 5, Inf), labels = c('small', 'middle', 'big'))
# [1] <NA> middle middle big big small middle big big middle <NA> big
# Levels: small middle big
## 分类指标有序
cut(c(1,4, 5, 7, 9, 2, 4, 6, 8, 3, 1,7), breaks = c(1, 2.224, 5, Inf), ordered_result = T)
# [1] <NA> (2.22,5] (2.22,5] (5,Inf] (5,Inf] (1,2.22] (2.22,5] (5,Inf] (5,Inf] (2.22,5] <NA> (5,Inf]
# Levels: (1,2.22] < (2.22,5] < (5,Inf]
场景六
求导数的函数。dxy=deriv(f~x^2+y^2,c(‘x’,’y’),func=T)
场景七
split()函数能将数据框按某一列分为包含若干个数据框的列表。然后,unsplit()可以将这个列表合并。
场景八
psych包中的describe() 函数,可以简单查看数据的基础信息。Hmisc包中的describe() 函数也有类似功能。
场景九
Sys.timezone()查看R的时区设置
devtools::session_info()查看R软件的相关信息
sessionInfo()查看R软件的相关信息,更加侧重编码信息
场景十
关于R的几个特殊的目录。
R.home() 查看R软件的相关目录
.Library 查看R核心包的目录
.libPaths() 查看R所有包的存放目录
ystem.file() 查看指定包所在的目录
- R软件的相关目录
# R.home() 查看R软件的相关目录
## 打印R软件安装目录
R.home()
## 打印R软件bin的目录
R.home(component="bin")
## 打印R软件文件的目录
R.home(component="doc")
- R软件的包目录
# 打印核心包的目录
.Library
# 打印所有包的存放目录
.libPaths()
- 查看指定包所在的目录
# base包的存放目录
system.file()
# dplyr包的存放目录
system.file(package = "dplyr")
场景十一
tidyr包中的fill函数可以用来填充向量中的NA。
##