生信技能树学习之数据结构--矩阵、列表
矩阵matrix 二维,只允许一种数据类型
列表。可装万物,没有列与列的区别,
矩阵和列表
m1 = as.matrix(iris[,1:4])
m2 = matrix(rnorm(18),nrow = 3)
m2
m3 = cbind(1:10,
11:20,
30:21)
m3
volcano
m <- matrix(1:9, nrow = 3)
m
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
m[2,] [1] 2 5 8
m[,1] [1] 1 2 3
矩阵取子集不支持
colnames(m) <- c("a","b","c")
m
a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> t(m) #转置
[,1] [,2] [,3]
a 1 2 3
b 4 5 6
c 7 8 9
as.data.frame(m)
#转换为数据框,没有赋值,所以输出结果仍是矩阵,只是在控制台看看结果
class(m) [1] "matrix" "array" #array是数组,而矩阵是特殊的数组
m=as.data.frame(m)
m
class(m) [1] "data.frame"
pheatmap::pheatmap(m)
pheatmap::pheatmap(m,cluster_cols = F,cluster_rows =F )
l <- list(m1=matrix(1:9, nrow = 3),
m2=matrix(2:9, nrow = 2))
l ##列表里的下一级也叫元素,m1,m2只是列表l中的元素名字,m1和m2都是矩阵。
$m1
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
$m2
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 3 5 7 9
####不输入m1 和m2时,输出的就是[[1]] [[2]]
l <- list(matrix(1:9, nrow = 3),
matrix(2:9, nrow = 2))
[[1]]
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[[2]]
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 3 5 7 9
###两个中括号是取出一个矩阵
l[[2]] ###取出第二个矩阵,
l$m1 ###取出m1子集
列表的下一级也是元素,列表的元素可以包罗万象,什么数据结构都可以
### 补充:元素的名字
scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
jimmy nicker Damon Sophie tony
100 59 73 95 45
scores["jimmy"] ##取子集
jimmy
100
scores[c("jimmy","nicker")] ##取子集
jimmy nicker
100 59
names(scores)[scores>60] ##取出分数大于60的人的名字。
[1] "jimmy" "Damon" "Sophie"
# 删除变量 只能删除变量用,不能删除一个数据框的第几行或者第几列
rm(l) ##删除一个
rm(df1,df2) ##删除多个
rm(list = ls()) ###**删除全部
快捷键ctrl+l ###清空控制台
#练习3-2 load("matchtest.Rdata")
#1.统计iris最后一列有哪几个取值,每个取值重复了多少次
iris[,ncol(iris)]
table(iris[,ncol(iris)])
table(iris$Species)
#2.提取iris的前5行,前4列,并转换为矩阵,赋值给a。
a <- as.matrix(iris[1:5,1:4])
a
#3.将a的行名改为flower1,flower2...flower5。
rownames(a) <- paste0("flower",1:nrow(a))
a
#4.探索列表取子集l[2]和l[[2]]的区别(提示:数据结构)
class(l[2]) #### [1] “list”
class(l[[2]]) #### [1] “matrix”“array”
a = read.csv("exercise.csv")
a = a[1:3,]
a
a[,c(1,3,2)]
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。