R 基础笔记

R 和 Python 一样都是解释性、动态类型语言,因此存在相同点和差异点,为了方便学习 R 将结合 Python 的角度来了解 R。

1. 与 Python 基础应用比较

以下是对 Python 和 R 基础应用的比较:
| 目的 | R 方法 | Python 方法 |
| :——–: | :————-: | :————-: |
| 寻求帮助 | 使用 ?mean 表示查找 mean函数帮助,相当于使用help("mean")
??plotting 表示寻求 plotting 帮助,相当于使用 help.search("plotting")
typeof(object) 查看对象类型,此外还可以使用 mode | help(object) 查看函数和模块用途
dir(object) 查看属性列表[^1]
type(object) 查看对象类型 |
| 包管理 | install.packages("package_name")
update.packages(ask=FALSE)
remove.package("package_name") | pip install package_name
pip update package_name
pip remove pakcage_name |
| 调用包 | library(package_name) ,包名称不需要加引号 | 使用 import 语句 |
| 赋值方式 | 可以使用 <- 或者 =,推荐使用 <- | 使用 = |
| 变量名 | 区分大小写,可以使用 . 作为变量名一部分;
如果是 . 做第一个字符,第二个字符只能是字母[^3] | 区分大小写 |
| 数据类型 | 基本数据对象类型:数值型、字符型、复数型、布尔型、向量
其他结构对象:因子、数组、矩阵、数据框、列表、时间序列 | 基本数据对象:数值型、字符型、布尔型
容器对象:列表、元组、字典、集合 |
| 算数运算符 | 保留了 +, -, *, /;指数标识符可以使用 ^ 或者 ** | 保留 +, -, *, /, %;但指数标识符只能使用 ** |
| 逻辑运算符 | >, <, >=, <=, 以及 !=;逻辑连接词 &, |
成员检查 %in% | >, <, >=, <=, 以及 !=;逻辑连接词 and(&), or(|)
成员检查 in |
| 代码块 | 多数情况下需要使用 {} 来区分 | 使用缩进的方式控制代码块 |
| 注释 | 使用 # 进行注释 | 使用 # 进行注释 |
| 运行脚本 | Rscript file.R | python file.py |

2. R 基本应用

  1. 工作目录

    R 启动后有一个默认的工作目录,可以通过 getwd() 获取当前工作目录的绝对路径;如果需要切换工作目录,可以使用 setwd()

  2. 寻求帮助

    R 的帮助功能非常丰富,除了上面讲到了常用的寻求帮助方法,还有其他方法可以使用:

    • example(function_name) 已知一个函数名,需要确认正确使用示例
    • args(function_name) 获取函数中参数列表
    • ls() 显示对象名称
    • apropos("object_name") 查找匹配其输入的变量以及函数,它可以传入一个正则表达式
    • options() 确认环境变量
    • function_name 输入函数名,而不调用(即没有输入 ())时可以查看函数代码——有时不能使用时,可以使用其他方法[^2]
    • list.files() 显示工作目录下的文件

    其他辅助功能,例如 Tab 自动补全

3. 数据处理和分析

3.1 常用分析方法

Python 使用 pandas 创建的 DataFrame 可以通过 head(), tail() 等方法进行访问数据,在 R 中同样存在相应的方法:

  • head(object)
  • tail(object)
  • str(object)
  • colnames(object)
  • rownames(object)
  • name(object) 用于返回对象的名称
  • summary(object) 可以使用其他 package 来完成相应的目的,psych 中的 describe 方法可以得到更加详细的统计学信息

以上方法能够了解数据的一般性信息。如果需要对数据值进行分析,R 有专门的方法可以用于计算相应的统计值:

  • mean()
  • median()
  • cor()
  • mfv() 计算众数,需要加载 modeest 包来使用该函数
  • table() 用于类别性数据计数统计
  • by() 按照某个变量分类对数据进行统计分析

如果对数据的列进行筛选,那么需要使用 $ 去访问对象的列名,对于使用切片的方式访问数据和 Python 相同,可以使用 [] 进行切片 df[, c(2, 4)]——注意以 1 为起始,负数索引不是逆向索引而是不选择对应的索引;此外数据筛选同样可以采用掩码来方式。除此之外,还可以使用函数(这里可以结合使用 dplyr 的package 来处理)来完成相应的工作:

  • subset()
  • filter()
  • select()

同样在使用 R 的过程中需要对数据进行处理,例如删除缺失值、数据融合

  • na.omit() 用于删除具有缺失值数据
  • merge() 用于合并数据

此外对于数据处理完成之后,可能还需要进行保存。相应的保存函数如下:

  • write.table()

3.2 其他分析方法

3.2.1 分面可视化

分面中,常用两种方法来进行分析,一种是 facet_wrap(~vriable_name) 和 另一种是facet_grid(vertical~horizontal)。这两种方法需要注意,前者如果是多个变量将导致标签位置都在列上面,如下:

3.2.2 可视化优化

在进行可视化分析的时候,需要使用其他视觉信息来表达数据信息,例如点大小,色阶以及色调等方式。在使用方面可以通过调整相应的参数来进行修改图形信息,例如 ggplot 绘图中,可以通过传入 size 参数来调整图形大小, color 参数来调整颜色信息;使用 scale_colour_brewer() 来调整图形颜色以及使用添加相应的 legend 信息。

参考

  1. Python dir() 函数
  2. 153 分钟学会 R
  3. Google’s R Style Guide
  4. ggplot 主题文档
  5. An Introduction to reshape2
  6. Converting data between wide and long format
  7. scale_colour_brewer • ggplot2
  8. Legends (ggplot2)
作者

ZenRay

发布于

2021-04-25

更新于

2021-04-25

许可协议

CC BY-NC-SA 4.0