R语言基础语法
常用操作
安装包
install.packages("openxlsx")
提示
openxlsx
为包名,必须要加引号(在 R 中,单双引号可通用)。加载包
library(openxlsx)
更新包
update.packages("openxlsx") update.packages() # 更新所有包
删除包
remove.packages("openxlsx")
获取或设置当前路径
getwd() setwd("D:/R-4.2.3")
注意
路径中的 “ \ ” 必须用 “ / ” 或 “ \ ” 代替。
赋值
R 标准语法使用
<-
或->
来赋值,而不是=
,代码如下:x <- 1:10 x + 2 ## [1] 1 2 3 4 5 6 7 8 9 10
提示
R 也允许使用 “=” 赋值,建议使用更现代和简洁的 “=” 来赋值。
基本运算
数学运算
+ - * /
、^
(求幂)、%%
(按模取余)、%/%
(整除)。
比较运算
>
、<
、>=
、<=
、==
、!=
;identical(x, y)
—— 判断两个对象是否严格相等;all.equal(x, y)
或dplyr::near(x, y)
—— 判断两个浮点数是否近似相等(误差为 1.5e^-8)。0L == 0 ## [1] TRUE identical(0L, 0) ## [1] FALSE sqrt(2)^2 == 2 ## [1] FALSE all.equal(sqrt(2)^2, 2) ## [1] TRUE
逻辑运算
|
(或)、&
(与)、!
(非)、xor()
(异或)。
基本数据类型
- R 语言的基本数据类型
numeric
—— 数值型,又分为integer
(整数型)和double
(浮点型);logical
—— 逻辑型,只有TRUE
和FALSE
;character
—— 字符型,引号括起来的若干字符。
- R 语言使用
NA
表示缺失值,NA
具有 “传染性”,即NA
参与的计算,结果都会变成NA
。R 语言自带的很多函数都提供na.rm
参数设置,以便于设定计算时是否忽略缺少值。 - 可用函数
class(x) / typeof(x) / mode(x)
来查看对象 x 的类型,str(x)
显示对象 x 的结构。
- R 语言的基本数据类型
保存和载入数据
save(x, file = "data/dat.Rda") load("data/dat.Rda")
清屏和清除变量
使用快捷键
Ctrl + L
或单击命令窗口右上角的 “小刷子” 图标可对命令窗口清屏。若要清除当前变量,使用以下命令:
rm(x) # 清除变量 x rm(list = ls(all = TRUE)) # 清除当前所有变量
提示
单机
Environment
窗口的 “小刷子” 图标也可以清除当前所有变量。获取帮助
函数帮助
命令窗口执行:
?plot
在线帮助
若想根据某算法的名字或关键词,搜索哪个包能实现该算法:
RSiteSearch("network")
数据结构:向量、矩阵、多维数组
R 中常用的数据结构可划分为:
- 同质数据类型(homogenerous),即所储存的一定是相同类型的元素,包括向量、矩阵、多维数组。
- 异质数据类型(heterogenerous),即可以储存不同类型的元素,这提高了储存灵活性,但降低了效率,包括列表、数据框。
另外,还有字符串、日期时间数据、时间序列数据、空间地理数据等。
R 语言中的数据结构还有一种从广义向量(序列)的角度进行划分。
- 原子向量:各个值都是同类型的,包括六种类型:
logical、integer、double、character、complex、raw
。 - 列表:各个值可以是不同类型的,
NULL
表示空向量(长度为 0 的向量)。
向量有两个属性:type(类型)和 length(长度);还能以属性的方式向向量中任意添加额外的 metadata(元数据),属性可用来创建拓展向量,以执行一些新的操作。常用的拓展向量有:
- 基于整数型向量构建的因子;
- 基于数值型向量构建的日期和日期时间;
- 基于数值型向量构建的时间序列;
- 基于列表构建的数据框和
tribble
。
向量(一维数组)
向量是由一组相同类型的原子值构成的序列,可以是一组数值、一组逻辑值、一组字符串等。
常用的向量有数值向量、逻辑向量、字符向量。
数值向量
数值向量就是由数值组成的向量,单个数值是长度为 1 的数值向量,例如:
x = 1.5 x ## [1] 1.5
我们可以用
numeric()
创建一个全为 0 的指定长度的数组向量,如下所示:numeric(10) ## [1] 0 0 0 0 0 0 0 0 0 0
在 R 中经常使用函数
c()
将多个对象合并在一起:c(1, 2, 3, 4, 5) ## [1] 1 2 3 4 5
c(1, 2, c(3, 4, 5)) ## [1] 1 2 3 4 5
创建等差的数值向量,用
:
或者函数seq()
,基本格式为:seq(from, to, by, length.out, along.with, ...)
form
:设置首项(默认为 1)。to
:设置尾项。by
:设置等差值(默认为 1 或 -1)。length.out
:设置序列长度。along.with
:以该参数的长度作为序列长度。
1:5 ## [1] 1 2 3 4 5 seq(1, 10, 2) ## [1] 1 3 5 7 9 seq(3, length.out = 10) ## [1] 3 4 5 6 7 8 9 10 11 12
创建重复的数值向量用函数
rep()
,基本格式为:rep(x, times, length.out, each, ...)
x
:为要重复的序列;times
:序列的重复次数;length.out
:设定所产生的序列的长度;each
:设置每个元素分别重复的次数(默认为 1 )。
x = 1:3 rep(x, 2) ## [1] 1 2 3 1 2 3 rep(x, each = 2) ##[1] 1 1 2 2 3 3 rep(x, c(2, 1, 2)) ## [1] 1 1 2 3 3 rep(x, each = 2, length.out = 4) ## [1] 1 1 2 2 rep(x, times = 3, each = 2) ## [1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3
向量可以做
+、-、*、/
四则运算,即对应元素分别做运算的向量化运算。2:3 + 1:5 ## [1] 3 5 5 7 7
注意
将两个不同长度的向量做运算,短的会自动循环补齐以配合长的。
逻辑向量