R 常用代码整理

  • 1 关于环境
  • 2 安装package
  • 3 数据处理
    • 3.1 数据导入导出
    • 3.2 处理格式
      • 3.2.1 处理数字
      • 3.2.2 处理字符串
      • 3.2.3 处理日期
    • 3.3 多线程
        • 3.3.1 apply函数
        • 3.3.2 parallel package
  • 4 画图
    • 4.1 dev
    • 4.2 R中自带的plot
    • 4.3 ggplot2
        • 4.3.1 基本语法
    • 4.4 plotly
        • 4.4.1 3D Plot
        • 4.4.2 保存图片

目前需要写很多R code,搞个简单一点的cheatsheet。以下是目前设想的outline,内容会一点一点补上去的。

1 关于环境

** 需要在终端操作

  • 查看环境:conda env list
  • 创建环境:conda create -n <envi_name> python=3.7 (或直接在anaconda里设置)
  • 进入环境:source activate <envi_name>
  • 退出环境:conda deactivate
  • 删除环境:conda remove -n <envi_name> --all

2 安装package

i. 最常用

install.packages("package_name")

ii. 从GitHub里安装

library(devtools) # 需要提前安装devtools这个package
install_github('URL')

3 数据处理

3.1 数据导入导出

setwd("路径") # 设定working directory
dataset <- read.csv(file, header = TRUE, sep = ",", quote = "\"",dec = ".", fill = TRUE, comment.char = "", …) # 导入csv
head(datatset, n) # 查看前n条数据
write.csv(dataset, file, traitsAsDir = FALSE, csv2 = TRUE, row.names = FALSE, ...) # 导出csv

3.2 处理格式

3.2.1 处理数字

as.numeric(x, …) # 转成数字
如果遇到初始csv文件里面用逗号作为千分位分隔符的情况(e.g., 1,000),用gsub(pattern, replacement, x)把逗号修正。(e.g., as.numeric(gsub(’,’, ‘’, x)))

3.2.2 处理字符串

as.character(x, …) # 转成字符串

3.2.3 处理日期

as.Date(x,format)
x是要转的日期,format是x的格式。e.g. format="%Y/%m/%d"

  • %Y:四位数年份 (e.g., 2021)
  • %y:两位数年份 (e.g., 21)
  • %m:数字的月份 (e.g., 01)
  • %b:缩写的月份 (e.g., Jan)
  • %B:完整的月份 (e.g., January)
  • %a:缩写的星期 (e.g., Mon)
  • %A:完整的星期 (e.g., Monday)
  • %d:日期 (e.g., 20)

3.3 多线程

3.3.1 apply函数

apply(X, MARGIN, FUN, …)

  • x: 数组, 包括matrix.
  • margin = { 1 ,按行操作 2 ,按列操作 \begin{cases}1 \text{,按行操作}\\ 2 \text{,按列操作}\end{cases} {1,按行操作2,按列操作
  • fun: 任何build-in或self-defined函数
  • …: 所有传递给fun的参数

lapply(X, FUN, …)
tapply(X, INDEX, FUN = NULL, …, default = NA, simplify = TRUE)

3.3.2 parallel package

detectCores() 查看电脑能够使用的线程数
makeCluster(spec, type, ...) 创建多份并行R copies.
do.call(what, args, quote = FALSE, envir = parent.frame())
parApply(cl = NULL, X, MARGIN, FUN, ..., chunk.size = NULL)用法和apply差不多,parLapply(),parSapply()同理
getDefaultCluster()
stopCluster(cl = NULL)

4 画图

4.1 dev

dev.new() # 创建画布
aa <- dev.list() # 获得画布序列
dev.set(which=aa[I]) # 切换画布
dev.print(pdf, "filename.pdf") # 保存图片 ## 其他格式差不多同理*

4.2 R中自带的plot

4.3 ggplot2

Book: R for data science

4.3.1 基本语法

ggplot(data = <DATA>) + 
  <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

4.4 plotly

Plotly 是我目前用过的最舒服的3d交互式绘图package,画完的图在html上显示。官方documentation

4.4.1 3D Plot

i. surface plot

fig <- plot_ly(x=.., y=.., z=.., type="surface") # 单层surface

fig <- plot_ly(showscale = FALSE) # 多层surface
fig <- fig %>% add_surface(z = ~z)
fig <- fig %>% add_surface(z = ~z2, opacity = 0.98)
fig <- fig %>% add_surface(z = ~z3, opacity = 0.98)

ii. scatter plot

fig <- plot_ly(dataframe, x = ~x, y = ~y, z = ~z, marker = list(color = ~color, colorscale = c('#FFE1A1', '#683531'), showscale = TRUE)) %>% add_markers() #单层scatter

fig <- fig %>% add_markers(x=x1, y=y1, z=z1) #多层scatter
fig <- fig %>% add_markers(x=x2, y=y2, z=z2)

4.4.2 保存图片

保存plotly生成的图片需要用到htmlwidgets这个package,同时也需要电脑里下载有pandoc
pandoc下载地址。Mac用户建议直接install然后安装,用homebrew下载速度十分缓慢。

library(htmlwidgets)
saveWidget(fig, file=paste0( getwd(), "/filename.html"))

更多推荐

R 常用代码整理