R语言入门-数据框矩阵列表


title: “R语言入门-数据框矩阵列表”
output: html_document
date: “2024-03-08”

knitr::opts_chunk$set(echo = TRUE,message=F,warning=F)

核心

在这里插入图片描述

数据框的来源、新建、属性、修改和连接

  • 数据来源向量是一维的
  • matrix(矩阵)的核心是二维,只允许一种数据类型 1和a不可放一起
  • data.frame(数据框)的核心也是二维,每列只允许一种数据类型 平常的excel 数据表,所以数据框很重要
  • list列表可装万物
    不清楚时可以用class或is族函数确认
class(m)

数据框新建 主要思想:data.frame

df1 <- data.frame(gene    = paste0("gene",1:4),
                  change  = rep(c("up","down"),each = 2),
                  score   = c(5,3,-2,-4)) #列名=每列的元素
df1

数据框读取 主要思想:read.csv

  • 读取特定文件
df2 <- read.csv("gene.csv") #读取表格文件
  • 读取R语言内置数据(例如iris、volcano)
iris #给一些分析做示例分析
volcano
letters
LETTERS  # 前十三位letters[1:13] R语言内置数据(例如iris、volcano)
whitch(letters==M)

数据框查看/数据框读取 主要思想:对数据框特定向量或元素的查看/提取

dim(df1) #查看行列
nrow(df1) #查看行
ncol(df1) #查看列
rownames(df1) #查看列的名字
colnames(df1) #查看行的名字

数据框子集读取 主要思想:[]/$ []:二维读取 $:读取某列

# 按坐标
df1[2,2] #左行第二行,右列第二列
df1[2,]
df1[,2]
df1[c(1,3),1:2]#中括号里的逗号,表示维度的分割
# 按名字
df1[,"gene"]
df1[, c('gene','change')]
df1$gene  #$读取基因名称为gene的这列
# 按条件(逻辑值)
df1[df1$score>0,]
#练习题 将数据框socer>0提取
df1 <- data.frame(gene   = paste0("gene",1:4),
                  change  = rep(c("up","down"),each = 2),
                  score   = c(5,3,-2,-4))
df1
k = df1$score>0;k
## [1]  TRUE  TRUE FALSE FALSE
df1[k,]
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
df1[df1$score>0,] #简写

数据框的计算 主要思想:函数+(df1[])/函数+(df1$矩阵列名)

mean(df1$score)
max(df1$score)

数据框的修改 单个元素的修改 主要思想:X[提取元素] <- a/1/T

数据框的修改 某列向量的修改 主要思想:X$修改列名 <- c()

df1[3,3] <- 5 #改一个格
df1$score <- c(12,23,50,2) #改一整列
df1$p.value <- c(0.01,0.02,0.07,0.05) #增加一列 #有则改之无则新增

数据框表头名字修改 主要思想:rownames/colnames() <- ,,,

rownames(df1) <- c("r1","r2","r3","r4") #改行名和列名
colnames(df1)[2] <- "CHANGE" #只修改某一行/列的名

数据框的连接 主要思想:merge(test1,test2,by=“name”)

merge(test1,test2,by="name")
merge(test1,test3,by.x = "name",by.y = "NAME") #默认by.x=by.y

矩阵的操作 主要思想:操作形同数据框除了无法用$ 热图数据源!

  • 矩阵可以转换成数据框 *as.data.frame()*没有赋值就没有变
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
dim(m)
colnames(m)
m[2,2]
m[,"c"]
m[m[, 2] > 4, 2] #仅仅挑选第二列>4的元素  
m[m[, 2] > 4, ] #挑选出满足矩阵第二列>4的元素
mean(m[,"c"])
m[3,3] <- 5;m #改一个格
rownames(m) <- c("r1","r2","r3");m 

pheatmap::pheatmap(m) #形成一一对应的关系
pheatmap::pheatmap(m,cluster_rows = F,cluster_cols = F)
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
as.data.frame(m)
class(m)
## > as.data.frame(m)
##  a b c
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9
## > class(m)
m <- as.data.frame(m)
class(m)
## [1] "matrix" "array" 
## > m <- as.data.frame(m)
## > class(m)
## [1] "data.frame"

列表的新建和取子集

  • 主要思想:列表展示的本质是像在展示一个一个的元素
  • 列表的每个元素可以是任何形式
x <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2))
x
## $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
  • x[[1]] #列表取子集需要两个[] [[列表的元素的序号或名字]]
  • xKaTeX parse error: Expected 'EOF', got '#' at position 4: m1 #̲列表取子集也可用 $+列表的元素名字
x[[1]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

x$m1
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

给元素赋予名字

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] #左是向量 右边是[]逻辑值 所以这是取子集的命令
#对names(scores)这个向量取子集,使用了scores>60判断出来的逻辑值
## [1] "jimmy"  "Damon"  "Sophie"
  • 删除tips
rm(l) #删除一个
rm(df1,df2) #删除多个
rm(list = ls()) #删除全部
ctrl+l #清空控制台,也可以选择environment右上角的小扫帚

引自生信技能树课程,感谢小洁老师!

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值