x1 <- c(1,2,5,3,6,-2,4);
print(x1)[1] 1 2 5 3 6 -2 4
数字型
字符型
逻辑型
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
[,1] [,2] [,3] [,4]
[1,] 1 7 3 3
[2,] 2 5 1 2
[3,] 3 2 3 3
[4,] 4 1 2 2
[,1] [,2] [,3] [,4]
[1,] 2 1 1 1
[2,] 1 2 1 1
[3,] 1 1 2 1
[4,] 1 1 1 2
eigen() decomposition
$values
[1] 5 1 1 1
$vectors
[,1] [,2] [,3] [,4]
[1,] -0.5 0.8660254 0.0000000 0.0000000
[2,] -0.5 -0.2886751 -0.5773503 -0.5773503
[3,] -0.5 -0.2886751 -0.2113249 0.7886751
[4,] -0.5 -0.2886751 0.7886751 -0.2113249
数组(aray)与矩阵类似,只是可以有多个维度。一 维数据是向量,二 维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数 据构成的。
数组可通过array()函数来创建,其语法是:aray(data,dim)。其 中 data必须是同一类型的数据,dim是各维的长度组成的向量。
在试验所获得的数据中,可能不同的列会包含不同类型数据(数值型、 字符型)等。这 种类型的数据,在语言中,可以用数据框来处理。R 语言中数据框与其他软件诸如SAS,SPSS以及EXCEL电子表格中看到的数集类似。数 据框是R语言中最常见的一种数据结构,也是试验数据分析 过程中最常用的一种数据结构形式。据 框可以通过data.frame()函数创建,见R语言代码清单2.7。数 据框的每一列数据的模式是唯一的,但不同列的数据模式可以不同。这 种结构与数据分析过程中所涉及的数据集 形态最为接近。
require(tidyverse)
Irrigation <- c("ICF","IAWD","ICF","IAWD","ICF","IAWD")
Biochar <- c("B0","B0","B5","B5","B10","B10")
GrainYield <- runif(6,8,12)
ds <- data.frame(Irrigation,Biochar,GrainYield)
ds %>% knitr::kable()| Irrigation | Biochar | GrainYield |
|---|---|---|
| ICF | B0 | 8.750472 |
| IAWD | B0 | 9.421543 |
| ICF | B5 | 11.946046 |
| IAWD | B5 | 11.053975 |
| ICF | B10 | 10.087832 |
| IAWD | B10 | 11.643756 |
ds <- expand.grid(I=c("ICF","IAWD"),B=c("B0","B5","B10"),R=c("R1","R2","R3"))
ds$GrainYield <- runif(18,8,12)
ds %>% knitr::kable()| I | B | R | GrainYield |
|---|---|---|---|
| ICF | B0 | R1 | 8.924867 |
| IAWD | B0 | R1 | 10.299777 |
| ICF | B5 | R1 | 11.437252 |
| IAWD | B5 | R1 | 8.162790 |
| ICF | B10 | R1 | 8.845955 |
| IAWD | B10 | R1 | 9.950702 |
| ICF | B0 | R2 | 11.882717 |
| IAWD | B0 | R2 | 8.781413 |
| ICF | B5 | R2 | 11.129292 |
| IAWD | B5 | R2 | 10.312746 |
| ICF | B10 | R2 | 11.937153 |
| IAWD | B10 | R2 | 11.887775 |
| ICF | B0 | R3 | 10.780754 |
| IAWD | B0 | R3 | 11.805295 |
| ICF | B5 | R3 | 11.887712 |
| IAWD | B5 | R3 | 10.402841 |
| ICF | B10 | R3 | 8.884404 |
| IAWD | B10 | R3 | 8.983745 |
类别变量和有序变量在R语言中称为因子。因 子与试验设计中的因素相对应。因 子数据可以通过factor()函数指定,见R语言代码清单2.10。
列表是R语言中数据类型复杂的一种,是R语言中数据对象的集合。 列表中的数据对象可以是标量、向量、数组、数据框,甚至是列表。列 表可以用list()函数来创建。
tidyverse系列 https://bookdown.org/yih_huynh/Guide-to-R-Book/tidyverse.html
快速数据集操作 https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.html
# 数据类型与基本语法
## 向量
**数字型**
```{r}
x1 <- c(1,2,5,3,6,-2,4);
print(x1)
```
**字符型**
```{r}
x2 <- c("one","two","three","four");
print(x2)
```
**逻辑型**
```{r}
x3 <- c(TRUE,TRUE,FALSE,TRUE,FALSE);
print(x3)
```
```{r}
x4 <- sprintf("x%s",x1)
print(x4)
```
## 矩阵
### 创建矩阵(默认纵向布置)
```{r}
m1 <- matrix(1:20,nrow = 5,ncol = 4)
m1
```
### 创建矩阵(横向布置)
```{r}
m2 <- matrix(1:20,nrow = 5,ncol = 4,byrow = TRUE)
m2
```
### 修改矩阵行列名称
```{r}
m3 <- matrix(1:20,nrow = 5,ncol = 4,byrow = TRUE,
dimnames=list(c("R1","R2","R3","R4","R5"),c("C1","C2","C3","C4")))
m3
```
### 转置
```{r}
t(m3)
```
```{r}
m3+1
```
```{r}
m3/2
```
### 向量内积
```{r}
x <- 1:5;
y <- 6:10;
x %*% y
```
### 向量外积
```{r}
x%o%y
```
### 对角矩阵
```{r}
A <- matrix(1:16,nrow=4)
A
```
```{r}
diag(A)
```
### 矩阵求逆
```{r}
A = matrix(c(1,2,3,4,7,5,2,1,3,1,3,2,3,2,3,2),ncol=4)
A
```
```{r}
solve(A)
```
### 矩阵的特征值与特征向量
```{r}
A = diag(4)+1
A
A.eigen = eigen(A,symmetric=T)
A.eigen
```
## 数组
数组(aray)与矩阵类似,只是可以有多个维度。一 维数据是向量,二 维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数 据构成的。
数组可通过array()函数来创建,其语法是:aray(data,dim)。其 中 data必须是同一类型的数据,dim是各维的长度组成的向量。
```{r}
XX <- array(1:24,c(3,4,2))
XX
```
## 数据框
在试验所获得的数据中,可能不同的列会包含不同类型数据(数值型、 字符型)等。这 种类型的数据,在语言中,可以用数据框来处理。R 语言中数据框与其他软件诸如SAS,SPSS以及EXCEL电子表格中看到的数集类似。数 据框是R语言中最常见的一种数据结构,也是试验数据分析 过程中最常用的一种数据结构形式。据 框可以通过data.frame()函数创建,见R语言代码清单2.7。数 据框的每一列数据的模式是唯一的,但不同列的数据模式可以不同。这 种结构与数据分析过程中所涉及的数据集 形态最为接近。
```{r}
#| tbl-cap: 使用向量产生数据框
#| label: tbl-table1
#| warning: FALSE
require(tidyverse)
Irrigation <- c("ICF","IAWD","ICF","IAWD","ICF","IAWD")
Biochar <- c("B0","B0","B5","B5","B10","B10")
GrainYield <- runif(6,8,12)
ds <- data.frame(Irrigation,Biochar,GrainYield)
ds %>% knitr::kable()
```
```{r}
#| tbl-cap: 利用expand.grid函数生成数据集
#| label: tbl-table2
#| warning: FALSE
ds <- expand.grid(I=c("ICF","IAWD"),B=c("B0","B5","B10"),R=c("R1","R2","R3"))
ds$GrainYield <- runif(18,8,12)
ds %>% knitr::kable()
```
## 因子
类别变量和有序变量在R语言中称为因子。因 子与试验设计中的因素相对应。因 子数据可以通过factor()函数指定,见R语言代码清单2.10。
```{r}
trtment <- c("Control","Zeolite","Biochar","Control","Zeolite","Biochar")
GrainYield <- c(8,9,8,11,16,12)
dt <- data.frame(trtment,GrainYield) %>% arrange(trtment)
dt
```
```{r}
dt$trtment <- factor(dt$trtment,levels = c("Control","Biochar","Zeolite"))
dt %>% arrange(trtment)
```
## 列表
列表是R语言中数据类型复杂的一种,是R语言中数据对象的集合。 列表中的数据对象可以是标量、向量、数组、数据框,甚至是列表。列 表可以用list()函数来创建。
```{r}
aa <- "first"
bb <- c(1,2,34)
cc <- factor(c(4,7))
dd <- data.frame(A=1:10,B=LETTERS[1:10])
list(aa,bb,cc,dd)
```
## 其他类型
### tibble
tidyverse系列 <https://bookdown.org/yih_huynh/Guide-to-R-Book/tidyverse.html>
### data.table
快速数据集操作 <https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.html>