R学习笔记

博主觉得自己的 OI 水平太菜了,去学了生物,然而深感写代码才是舒适区,有点割舍不掉的感觉。正好最近的概率论与数理统计课在学 R,于是打算写篇博客记录一下最近的学习过程。

本文操作均在 Rstudio 中,安装过程不在此赘述。

一、Rstudio的使用

这部分主要是从官网学习的。

ggplot2

get started

这个东西是好用的画图表工具。通过在控制台(左下侧的区域)输入

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)

这些

posted @ 2024-10-31 09:25  FourteenObsidians  阅读(2)  评论(0编辑  收藏  举报