实用的R函数

这篇文章记录的是在使用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。

##

Previous     Next Xu Kuang /
Published under (CC) BY-NC-SA in categories 技术篇  tagged with R