R学习-7.Matrices and Data Frames
Posted huanping
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R学习-7.Matrices and Data Frames相关的知识,希望对你有一定的参考价值。
Matrices and Data Frames
Matrices and Data Frames 用于储存表格类型的数据。其中Matrices存储的数据只能包含一种类型,而Data Frames可以包含多种数据类型。
一个vector可以转换成matrix,通过函数dim()
设置其维度。
> v <- 1: 20
> dim(v) <- c(4, 5)
> v
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> dim(v)
[1] 4 5
> class(v) # 通过函数确认v已经成为了matrix
[1] "matrix"
通过函数matrix()
能更直接的生成一个matrix,通过?matrix
可以获取到更多关于函数的相关信息。
比如生成一个4行5列的matrix
> my_matrix <- matrix(1:20, nrow = 4, ncol = 5)
> my_matrix
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> identical(v, my_matrix) # 函数identical告诉我们它们是一样的
[1] TRUE
若Matrix数据中存在字符串,将导致所有数据都变成了字符串了。函数cbind()
表示‘combine columns‘,以列的方向进行合并。
> patients <- c("Bill", "Gina", "Kelly", "Sean")
> cbind(patients, my_matrix)
patients
[1,] "Bill" "1" "5" "9" "13" "17"
[2,] "Gina" "2" "6" "10" "14" "18"
[3,] "Kelly" "3" "7" "11" "15" "19"
[4,] "Sean" "4" "8" "12" "16" "20"
matrix只支持一种数据类型,所以为保持一致,数字都变成了以双引号引起的字符串了。但这显然不是想要的。data frame 支持多种数据类型。可以用它来储存数据。
> my_data <- data.frame(patients, my_matrix)
> my_data
patients X1 X2 X3 X4 X5
1 Bill 1 5 9 13 17
2 Gina 2 6 10 14 18
3 Kelly 3 7 11 15 19
4 Sean 4 8 12 16 20
> class(my_data)
[1] "data.frame"
通过函数colnames()
可以给data frame添加列名
cnames <- c("patient", "age", "weight", "bp", "rating","test")
> colnames(my_data) <- cnames
> my_data
patient age weight bp rating test
1 Bill 1 5 9 13 17
2 Gina 2 6 10 14 18
3 Kelly 3 7 11 15 19
4 Sean 4 8 12 16 20
data frame 的索引可以通过行名和列名,也可以通过数字索引值。
> my_data["p2", "age"]
[1] 2
> my_data[2, 2]
[1] 2
下一节:R学习-7.Logic
以上是关于R学习-7.Matrices and Data Frames的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #190 (Div. 2) B. Ciel and Flowers