R学习笔记
博主觉得自己的 OI 水平太菜了,去学了生物,然而深感写代码才是舒适区,有点割舍不掉的感觉。正好最近的概率论与数理统计课在学 R,于是打算写篇博客记录一下最近的学习过程。
本文操作均在 Rstudio 中,安装过程不在此赘述。
一、Rstudio的使用
这部分主要是从官网学习的。
ggplot2
这个东西是好用的画图表工具。通过在控制台(左下侧的区域)输入
install.packages("ggplot2")
进行包的安装。
安装好后,打开一个新文件,在其中输入 library(ggplot2)
表示引入这个包(虽然包的下载只需要一次,但以后每个文件使用前都需要先 library 一下)。
注意到一个神奇的点:在 Rstudio 的 Source 区写的代码,通过 Ctrl + Enter 或者 Run 按钮运行时,只会执行光标所在的那一行代码,且是逐句执行的。
官网中下一步会教你打印出一个好看的图片,不过在此我们先不讲(因为我还不太懂原理)。
二、R 语言基础
数据类型
基础
R 中数据定义不需要声明类型,通过 v <- 123
即可把 v 赋值为 123,且这里的 123 可以改变为其他类型的东西。
常用的数据类型有 6 种,表格如下(可通过 print(class(x))
来校验 x 的数据类型):
数据类型 | 例 |
---|---|
Raw | 见说明 |
Logical | TRUE, FALSE |
Integer | 2L,0L |
Numeric | 12.3,123 |
Complex | 3 + 2i |
Character | 'a' , "good", "TRUE", '23.4' |
说明:Raw 是一种特殊的数据类型“原型”,通过命令
v <- charToRaw("Hello")
将 v 赋值为 Raw 型,其中 "Hello" 被存储为 48 65 6c 6c 6f。
同时注意一下, Complex 类型中 i 前面系数为一也要写成 a+1i
,否则会被提示 错误: 找不到对象'i'
TAT。
向量
用多个元素创建一个向量时,使用 c()
函数将它们联合起来。例如,
a <- c(1L, 12L, 1+1i, 12+1i, 1L, 'a', "???")
print(a)
结果就是
[1] "1" "12" "1+1i" "12+1i" "1" "a" "???"
大家可以再试试
print(class(a))
这里的分类好奇怪,大家可以换几个内容试试结果是什么。
我这里的试验结果是优先级按照上面那个表从小到大排列,即上面这段程序的输出结果是:
[1] "character"
列表
列表一个框,啥都能往里装。
list0 <- list(1, 1, 4)
list1 <- list(c(1, 2, 3), 32.1, sin, list0, list(5, 1, 4))
print(list1)
点击查看结果
[[1]]
[1] 1 2 3
[[2]]
[1] 32.1
[[3]]
function (x) .Primitive("sin")
[[4]]
[[4]][[1]]
[1] 1
[[4]][[2]]
[1] 1
[[4]][[3]]
[1] 4
[[5]]
[[5]][[1]]
[1] 5
[[5]][[2]]
[1] 1
[[5]][[3]]
[1] 4
好奇一下可不可以自我调用,发现可以,但是函数里面保存的是上一次的状态。
点击查看代码
> list1 <- list(0)
> list1 <- list(1, list1)
> print(list1)
[[1]]
[1] 1
[[2]]
[[2]][[1]]
[1] 0
> list1 <- list(1, list1)
> print(list1)
[[1]]
[1] 1
[[2]]
[[2]][[1]]
[1] 1
[[2]][[2]]
[[2]][[2]][[1]]
[1] 0
矩阵
矩阵通过函数 matrix()
创建。
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
这些