修改默认提示语言
R 默认提示的语言有的人是英文,有的人是中文,这是因为每个人系统默认语言不同,可以通过下面方式进行修改
(装 R 的时候不勾选 message transition 选项也可以)
1 2 Sys.getlocale( ) Sys.setenv( LANG= "en" )
查看 R 占用内存
可以使用 memory.size()
获取内存大小,不过该函数仅限 Windows 系统。
查看数据集内存占用
1 2 3 4 > object.size( mtcars) 7208 bytes> object.size( mtcars) / 1024 7 bytes
代码中换行
默认回车是运行代码,在 Rstudio 中有自动补齐,比如定义一个函数,直接自动补齐了 {}
,回车就运行了,可以使用 shift+enter 换行
边赋值边显示
默认赋值完,直接敲变量名就打印数据,可以利用下面方式一步完成两个操作。
1 2 3 ( x <- runif( 10 ) ) [ 1 ] 0.5795985 0.4661326 0.9730974 0.6697417 0.2431985 0.3988545 0.4064351 0.8403910 [ 9 ] 0.3136191 0.9979925
查看源代码
如果想查看 R 函数的源代码,直接输入函数名,不加括号即可。
1 2 3 4 5 > meanfunction ( x, ...) UseMethod ( "mean" ) < bytecode: 0x0000023e3b8db998 > < environment: namespace: base>
利用函数修改镜像
如果不设置 R 镜像,每次安装 R 包是都会弹出选择框,可以在安装之前通过函数进行设置,使用 chooseCRANmirror()
函数,给定 ind
选项一个数值即可。数值代表镜像编号。
1 2 3 4 5 6 7 8 9 10 11 12 13 > chooseCRANmirror( ) Secure CRAN mirrors 1 : 0 - Cloud [ https] 2 : Australia ( Canberra) [ https] 3 : Australia ( Melbourne 1 ) [ https] 4 : Australia ( Melbourne 2 ) [ https] 5 : Australia ( Perth) [ https] 6 : Austria [ https] 7 : Brazil ( BA) [ https] 8 : Brazil ( PR) [ https] 9 : Brazil ( RJ) [ https] 10 : Brazil ( SP 1 ) [ https] 11 : Brazil ( SP 2 ) [ https] 12 : Bulgaria [ https] 13 : Canada ( MB) [ https] 14 : Chile ( Santiago) [ https] 15 : China ( Beijing 2 ) [ https] 16 : China ( Hefei) [ https] 17 : China ( Hong Kong) [ https] 18 : China ( Guangzhou) [ https] > chooseCRANmirror( ind = 18 )
显示更多数据
默认 R 显示 1000 行数据,如果想显示更多,可以通过设置 max.print
选项。
1 2 3 4 5 6 7 8 > options( 'max.print' ) $ max.print[ 1 ] 1000 > options( 'max.print' = 2000 ) > options( 'max.print' ) $ max.print[ 1 ] 2000
默认保留小数点
默认 R 显示 7 为小数,如果想默认保留两位小数,可以通过设置 digits
选项。
1 2 3 4 5 6 7 8 > options( 'digits' ) $ digits[ 1 ] 7 > options( 'digits' = 2 ) > options( 'digits' ) $ digits[ 1 ] 2
管道
使用管道让代码更加简洁,无需定义过多中间变量。R中的管道符号为 %>%
如果要使用管道,需要加载 magrittr
包。其实 Rstudio 出的各种包都默认支持管道,如果加载了 tidyverse
包也是可以。
1 2 3 > library( magrittr) > library( ggplot2) > mtcars %>% ggplot( aes( x= cyl, y= mpg, group= cyl) ) + geom_boxplot( )
拆分列数据
有些时候记不住列名,或者容易拼错,想要列名也能够自动补齐,可以使用 attach
函数,这样每一列就变成一个独立的变量。
1 2 3 4 5 6 attach( mtcars) > cyl [ 1 ] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4 > mpg [ 1 ] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 [ 17 ] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
默认加载包
如果一些包经常使用,想要启动R之后自动加载,可以在配置文件中进行设置,例如每期启动 R,自动加载 ggplot2
包。
1 2 3 4 file.edit( "~/.Rprofile" ) .First <- function ( ) { library( ggplot2) }
为R添加额外扩展包加载路径
默认 R 包的加载目录在 .libPaths()
目录中,当然可以为其添加更多的路径。
1 2 3 4 5 6 > .libPaths( ) [ 1 ] "C:/Users/genom/Documents/R/win-library/4.0" [ 2 ] "C:/Program Files/R/R-4.0.3/library" > .libPaths( new = "C:/Users/genom/Desktop/nparFiles/" ) > .libPaths( ) [ 1 ] "C:/Users/genom/Desktop/nparFiles" "C:/Program Files/R/R-4.0.3/library"
迁移 R 包
如果需要将一台设备安装的 R 包,在另外一台设备上安装,首先保存 A 设备上的 R 包名字列表,在另外一台设备上写一个循环进行安装。
1 2 3 4 5 6 7 8 9 10 oldip <- installed.packages( ) [ , 1 ] save( oldip, file = "installedPacckages.Rdata" ) load( "installedPacckages.Rdata" ) newip <- installed.packages( ) [ , 1 ] for ( i in setdiff( oldip, newip) ) { install.packages( i) }
列出 R 包中的函数
如果想查看一个 R 包中全部函数,可以使用下面的语句。
不加载包使用其中函数
如果加载 R 包,还想使用其中的函数,需要使用 包名::函数
的方式。
快速获取颜色
在绘图的时候,想要快速设置几个不同的颜色,又嫌生成颜色比较麻烦。可以使用 rainbow()
函数,给定一个数据,快速生成颜色。
1 2 > rainbow( 6 ) [ 1 ] "#FF0000" "#FFFF00" "#00FF00" "#00FFFF" "#0000FF" "#FF00FF"
炸开数据
前面介绍了 attach()
函数可以将每一列变成一个单独变量,但这种方式并不推荐,因为会让变量环境很混乱。可以使用一个特殊管道符 %$%
实现同样的效果,我称之为把数据“炸开”
1 2 3 4 > library( magrittr) Warning message: 程辑包‘magrittr’是用R版本3.6 .3来建造的 > women %$% plot( weight, height)
巧用 example()
函数学习绘图
example()
函数会帮助运行 R 帮助文档中的代码,有时候想看一个函数如何使用,可以直接运行这个函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 > library( pheatmap) > example( "pheatmap" ) phetmp> phetmp> test = matrix( rnorm( 200 ) , 20 , 10 ) phetmp> test[ 1 : 10 , seq( 1 , 10 , 2 ) ] = test[ 1 : 10 , seq( 1 , 10 , 2 ) ] + 3 phetmp> test[ 11 : 20 , seq( 2 , 10 , 2 ) ] = test[ 11 : 20 , seq( 2 , 10 , 2 ) ] + 2 phetmp> test[ 15 : 20 , seq( 2 , 10 , 2 ) ] = test[ 15 : 20 , seq( 2 , 10 , 2 ) ] + 4 phetmp> colnames( test) = paste( "Test" , 1 : 10 , sep = "" ) phetmp> rownames( test) = paste( "Gene" , 1 : 20 , sep = "" ) phetmp> phetmp> pheatmap( test)
统计计算时间
想统计一条代码运行时间,可以使用 system.time()
函数
1 2 3 > system.time( runif( 100000000 ) ) 用户 系统 流逝 2.75 0.08 2.83
释放内存
R 有一套自己的内存回收机制,因此,即使删除了变量,内存不会立即变化,可以使用 gc()
函数释放内存。
1 2 3 4 5 6 7 8 9 10 11 > memory.size( ) [ 1 ] 297.56 > rm( list = ls( ) ) > memory.size( ) [ 1 ] 298.54 > gc( ) used ( Mb) gc trigger ( Mb) max used ( Mb) Ncells 1384255 74.0 4046672 216.2 4046672 216.2 Vcells 4288164 32.8 27057220 206.5 33821525 258.1 > memory.size( ) [ 1 ] 255.5
删除全部变量
1 2 3 4 5 6 > ls( ) > rm( list = ls( ) ) > gc( )
恢复默认数据集
如果不小心将内置数据集删除了,或者新定义同名变量,就会替换原有数据集。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 head( mtcars) mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 > mtcars= 1 : 10 > mtcars [ 1 ] 1 2 3 4 5 6 7 8 9 10 > data( "mtcars" ) > head( mtcars) mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 >
快速获取函数选项参数
R 函数的选项参数非常多,如果每次都调出帮助文档很麻烦,可以使用 args()
函数,快速打印出函数的选项参数。
1 2 3 4 5 6 7 8 9 10 11 > args( heatmap) function ( x, Rowv = NULL , Colv = if ( symm) "Rowv" else NULL , distfun = dist, hclustfun = hclust, reorderfun = function ( d, w) reorder( d, w) , add.expr, symm = FALSE , revC = identical( Colv, "Rowv" ) , scale = c ( "row" , "column" , "none" ) , na.rm = TRUE , margins = c ( 5 , 5 ) , ColSideColors, RowSideColors, cexRow = 0.2 + 1 / log10( nr) , cexCol = 0.2 + 1 / log10( nc) , labRow = NULL , labCol = NULL , main = NULL , xlab = NULL , ylab = NULL , keep.dendro = FALSE , verbose = getOption( "verbose" ) , ...) NULL