R语言基础

R语言是一门常用于数据分析、统计建模的计算机语言,它与主流的C/C++、Java、Python等语言相比,支持更多的数据类型,例如向量、矩阵,同时提供了多种统计和数学计算方法。

可以前往 https://www.r-project.org/ 下载R语言解释器,并且推荐使用 RStudio 这个R语言的集成开发环境。RStudio 可以在 https://www.rstudio.com/ 下载。

R语言基于向量运算

帮助及基本命令

清屏命令:Ctrl+L

导入包:library(base)

安装包:install.packages(base)

查看当前工作目录:getwd()

获取print函数的使用示例: example("print")

获取print函数的帮助: help("print")或?print

变量操作

赋值 x=23.54 x<-1 或者 1->x

x=23.54
floor(x) 【向下取整】
[1] 23
ceiling(x)【向上取整】
[1] 24

四则运算:+ - * /

乘方:2^3

不等于:2!=3

整数除法:5 %/% 3结果为1

求余:5 %% 3结果为2

字符串

用单引号 ' 或双引号" 包裹起来的文字内容为字符串,如 'hello, world''123456'

x<-c(“hello”,“world”,"!")
nchar(x)【向量元素的字符个数】
[1] 5 5 1
length(x)【向量长度(向量元素的个数)】
[1] 3

x=“hello”
y<-“world”
paste(x,y)【使用paste()函数连接字符串】
[1] “hello world”

l<-c(“A&a”,“B&b”,“C&c”)
x<-strsplit(l,split="&")【使用strsplit()函数拆分】
x
[[1]]
[1] “A” “a”

[[2]]
[1] “B” “b”

[[3]]
[1] “C” “c”

unlist(x)【返回值是一个列表,用unlist()查看】
[1] “A” “a” “B” “b” “C” “c”

向量

R 语言中可以通过 c(...) 来声明一个向量,例如 x=c(2,5,7,4,5)

1、返回其中的某些元素

x[c(1,2)]
[1] 2 5
x[2:5]
[1] 5 7 4 5
x[c(2,4,3)]
[1] 5 4 7

2、删除其中的某些元素

x[-2]
[1] 2 7 4 5
x[-2:-4]
[1] 2 5

3、这两种只在输出时删除,在x向量中删除

x=x[-2]
x
[1] 2 7 4 5

x=x[-2:-4]
x
[1] 2

4、在向量中查找某些元素

y=c(2,5,4,7,8,9)
which(y==2)【查找2,返回的是2所在的位置】
[1] 1

which.max(y)

【查找向量y中的最大最小值,返回该数所在的位置】
[1] 6
which.min(y)
[1] 1

subset(y,y>7)【对数据的某些字段进行操作】
[1] 8 9

5、对两个长度相等的向量进行四则运算的效果是向量中的每一个元素都与另一个向量中的每一个元素进行四则运算。而一个向量与一个数进行四则运算的效果是该向量中的所有元素都与这个数进行四则运算。如:

> x <- c(1, 2, 3, 4, 5)
> y <- c(1, 2, 3, 4, 5)
> x + y # 输出: [1] 2 4 6 8 10
> x + 1 # 输出: [1] 2 3 4 5 6

矩阵

R 语言中可以通过 matrix() 函数来创建矩阵。matrix() 的原型为

matrix(data=NA, nrow=1, ncol=1, byrow=FALSE, dinames=NULL)

其中:

  • data : 矩阵的元素,通常为向量。
  • nrowncol : 设定矩阵的行数和列数,一般只需设定其一,另一个会根据数据长度算出。
  • byrow : 设定矩阵的填充方式,值为 TRUE 时按行填充。默认为 FALSE ,即按列填充。

通过 matrix() 创建矩阵的例子如下:

> mat1 <- matrix(1:6, nrow=2) # 元素为1到6, 两行,按列填充
> mat1
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

> mat2 <- matrix(1:6, nrow=2, byrow=TRUE)
> mat2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

此外还可以使用 dim() 通过向量来创建矩阵,例如:

> mat3 <- 1:6
> dim(mat3) <- c(3, 2) # 将元素为1到6变为3行2列的矩阵
> mat3
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

1、矩阵检索

A=matrix(1:12,3)
A[c(1,2,3)]【选取第1,2,3行】
[1] 1 2 3
A[3,2]【选取第三行,第二列元素】
[1] 6

dim(A)【检索矩阵维数】
[1] 3 4

2、矩阵的转置

B=t(A)
B
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12

3、矩阵乘法

​ A * B:对应元素相乘,并且要求A和B维度一样

​ A * 2:每个元素乘以2

​ A %*% B:矩阵相乘,A是m×n的矩阵;B是n×k的矩阵,得 到m×k的矩阵

4、上三角、下三角矩阵、逆矩阵

lower.tri(A):返回一个和A同样尺寸的矩阵,下三角返回真

upper.tri(A):返回一个和A同样尺寸的矩阵,上三角返回真

A=matrix(1:16,4)
lower.tri(A)
[,1] [,2] [,3] [,4]
[1,] FALSE FALSE FALSE FALSE
[2,] TRUE FALSE FALSE FALSE
[3,] TRUE TRUE FALSE FALSE
[4,] TRUE TRUE TRUE FALSE
A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16

A[lower.tri(A)]<-0【将下三角清零】
A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 0 6 10 14
[3,] 0 0 11 15
[4,] 0 0 0 16

B=solve(A)【生成A的逆矩阵】
B
[,1] [,2] [,3] [,4]
[1,] 1 -0.8333333 -0.06060606 -0.026515152
[2,] 0 0.1666667 -0.15151515 -0.003787879
[3,] 0 0.0000000 0.09090909 -0.085227273
[4,] 0 0.0000000 0.00000000 0.062500000

生成时间序列

通过 ts() 函数可以将一个向量或矩阵转成一个一元或多元的时间序列(ts)对象,ts() 函数的原型为:ts(data = NA, start = 1, end = numeric(0), frequency = 1, deltat = 1, ts.eps = getOption("ts.eps"), class, names)。其中:

  • data 要生成时间序列的向量或矩阵。
  • start 第一个观测值的时间。
  • end 最后一个观测值的时间。
  • frequency 单位时间内观测值的频数。
  • deltat 两个观测值之间的时间间隔。
  • ts.eps 序列之间的误差限。若序列之间的频率差异小于 ts.eps 则认为这些序列的频率相等。
  • class 对象的类型。一元序列默认为 ts,多元序列默认为 c("mts", "ts")
  • names 给出多元序列中每个一元序列的名称,默认为 Series 1, Series 2, ...

下面是一个例子:

> ts(1:26, start = 1986)
Time Series:
Start = 1986 
End = 2011 
Frequency = 1 
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17
[18] 18 19 20 21 22 23 24 25 26

画图

R 语言中可以直接使用 plot() 函数来绘制图像,例如:

> x <- rnorm(10)
> plot(x)
> x
 [1] -0.3329234  1.3631137 -0.4691473  0.8428756
 [5] -1.4579937 -0.4003059 -0.7764173 -0.3692965
 [9]  1.2401015 -0.1074338

还可以直接绘制时间序列的图像:

> plot(ts(x))

为了将多幅图画在一起,可以使用 par() 函数:

op <- par(mfrow=c(2, 1), mar=c(5, 4, 2, 2) + .1) # mfrow 指定了图像矩阵为两行一列,即画两幅图,每行一幅;mar 指定了图像的边界,分别是下、左、上、右,可以根据喜好指定
plot(ts(x))
acf(z, main = “” ) # 计算 acf 函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值