美文网首页R学习笔记分享
Part2:数据类型和向量

Part2:数据类型和向量

作者: 不到7不改名 | 来源:发表于2021-02-01 10:53 被阅读0次

Part2:数据类型和向量

1.数据类型

  • 三种类型

    • 数值型:1 ,2
  • 字符型:’a' 'm'

    • 逻辑型

      • TRUE: T

      • FALSE:F

      • NA

  • 判断数据类型函数:class()

    • 逻辑运算 多个逻辑条件的连接与&、或|、非!
  • 判断函数

    • is.numeric()
    • is.logical()
    • is.charactor()
  • 转换

    • as.numeric()
    • as.logical()
    • as.charactor()

2.数据结构

  • 向量
    • 向量则是数据框单独拿出的一列,视为一个整体
    • 一个向量只能有一种数据类型,可以有重复值
  • 数据框
    • ​ 数据框约等于表格
  • 矩阵
  • 列表

3.向量

  • 2.1向量的生成

    • 用c()逐一放到一起
    • 连续的数字用冒号”:”
    • 有重复的用rep(),有规律的序列用seq(),随机数用rnorm
      • rep("gene",times=3)
      • seq(from=3,to=21,by=3)
      • rnorm(n=3)
    • paste0() image-20201118161221541.png
  • tips:数据类型转换的优先顺序

    • 数值型和逻辑型优先转换为字符型
    • 逻辑型优先转换为数值型
  • 2.2对一个向量进行的操作

    • 1.赋值

      • x = c(1,3,5,6,2) #随意的写法
      • x <- c(1,3,5) #规范的赋值符号
      • 赋值+输出一起执行:
        • (x <- c(1,3,5))
        • x <- c(1,3,5);x
    • 2.简单数学计算

      > x+1 [1] 2 4 6 2
      > log(x) [1] 0.000000 1.098612 1.609438 0.000000
      > sqrt(x) [1] 1.000000 1.732051 2.236068 1.000000
      
  • 3.根据某条件进行判断,生成等长的逻辑向量

    > x>3 [1] FALSE FALSE TRUE FALSE
    > x==3 [1] FALSE TRUE FALSE FALSE
    
  • 4.初级统计

    max(x) #最大值
    min(x) #最小值
    mean(x) #均值
    median(x) #中位数
    var(x) #方差
    sd(x) #标准差
    sum(x) #总和
    
    >length(x) #长度
    [1] 4
    > unique(x) #去重复
    [1] 1 3 5
    > duplicated(x)
    [1] FALSE FALSE FALSE TRUE
    > table(x) #重复值统计
    x
    1 3 5
    2 1 1
    > sort(x)
    [1] 1 1 3 5
    
  • 2.3对两个向量进行的操作

    • 1.逻辑比较,生成等长的逻辑向量

      x = c(1,3,5,1)
      y = c(3,2,5,6)
      
      x == y
      [1] FALSE FALSE TRUE FALSE
      
      x %in% y #x的元素是否在y中
      [1] FALSE TRUE TRUE FALSE
      
  • 2.数学计算

    x + y                                     
    
  • 3.“连接”

    paste(x,y,sep=":")
    [1] "1:3" "3:2" "5:5" "1:6"
    
  • 4.交集、并集、差集

    intersect(x,y)
    [1] 3 5
    union(x,y)
    [1] 1 3 5 2 6
    setdiff(x,y)
    [1] 1
    setdiff(y,x)
    [1] 2 6
    
  • 5.当两个向量长度不一致:循环补齐

image-20201118165909004.png

* 利用循环补齐简化代码

image-20201118170155239.png

4.向量筛选

  • (取子集) [ ]:将TRUE对应的值挑选出来,FALSE丢弃

  • 根据逻辑值:中括号里是与x等长的逻辑值向量

image-20201118170518680.png
  • 根据位置:中括号里是由x的下标组成的向量
image-20201118170645934.png

5.修改向量中的元素

  • 修改某个元素

    x =8:12;x 
    [1]8 9 10 11 12
    
    x[4] <- 40
    取子集+赋值
    
  • 修改某些元素

    x =8:12;x
    [1]8 9 10 11 12
    
    改符合某个逻辑条件的多个元素
    x[x>10] <- 10
    

6.简单向量作图

> k1 = rnorm(12)
> k2 = rep(c("a","b","c","d"),each = 3)
> plot(k1)
> boxplot(k1~k2)

7.向量匹配排序

match:谁在外面,谁就在后面

y[match(x,y)]

8.矩阵(matrix)

所有列的数据类型相同,两个维度(行数和列数)

image-20201120153606662.png
  • 矩阵新建和取子集

    m <- matrix(1:9, nrow = 3)
    
    m[2, ]
    m[, 1]
    m[2, 3]
    m[2:3,1:2]
    
  • 矩阵的转置和转换

    t(m)      #将行变成列,列变成行
    
     as.data.frame(m)         #将矩阵转换为数据框
    
  • 矩阵画热图

     pheatmap::pheatmap(m)
      pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)     #默认的设置不符合你心意,那就自定义
    

9.数据框(data.frame)

多个长度相同、数据类型可以不同的向量按列组合

image-20201120153736664.png

1.数据框来源

(1)在R中新建

(2)由已有数据转换或处理得到

(3)从文件中读取

(4)内置数据集

2.新建数据框

  • 本质上是向量按列组合

    df <- data.frame(gene =c("gene1","gene2","gene3"),
                  sam = c("sample1","sample2","sample3"),
                  exp = c(32,34,45))
    df <- data.frame(gene = paste0("gene",1:3),
                  sam = paste0("sample",1:3),
                  exp = c(32,34,45))
    
  • 读取数据框

df2 <- read.csv("gene.csv")

3.数据框属性描述

  • 维度(有几行几列)

    dim(df)
    nrow(df) /ncol(df)
    
  • 行名/列名

rownames(df)/colnames(df)

4.数据框取子集(一个、一行、一列)

4.1
  • df[2,2]  #数据框[行,列]
    
  • df [2,]   #取第二行
    df [,2]   #取第二列
    
  • df[c(1,3),1:2]    #对行和列进行选择
    
4.2根据行名或列名
df[,“exp”]
df[,c(“gene”,“exp”)]

进阶—理解以下代码

df[,ncol(df)]      #选取最后一列
df[,-ncol(df)]     #删除最后一列
4.3提取列的常用操作
 df$exp
 
 能对向量进行的计算和统计,都能对df$exp做

• max(df$exp) 最大值
• min(df$exp) 最小值
• range(df$exp) 数值的范围
• mean(df$exp) 均值
• median(df$exp) 中位数
• var(df$exp) 方差
• sd(df$exp) 标准差
• length(df$exp) 长度
• sum(df$exp) 总和

5.数据框编辑

  • 取子集$或[] +赋值操作
df[3,3]<- 5
df$abc <-c(23,15,37)

df$abc <-c(23,15,37)        #新增一列,如果原数据框没有这个列名
  • 误操作该怎么办?

    • 对df多次赋值,以最后一次为准
    • 运行了错误的代码,不能撤销,但可以覆盖或重来
  • 修改行名和列名

    rownames(df) <- c("r1","r2","r3")    #改全部行名
    rownames(df)[2] <-"x"                #改一个行名
    

6.数据框进阶

  • 行数较多的数据框可截取前/后几行查看

    head(data.frame)      #查看数据框全部的行
    head(data.frame,3)    #查看数据框的前3行
    
  • 行列数都多的数据框可取前几行前几列查看

    iris[1:3,1:3]     #数据框[]
    
  • 查看每一列的数据类型和具体内容

    str(df)
    
  • 去除含有缺失值的行:

    na.omit(df)   #仅按照某一列来去除缺失值、缺失值替换:tidyr包
    
  • 两个表格的连接

    cbind     #按列连接,行数相同
    rbind     #按行连接,列数相同
    
    merge(test1,test2,by="name")      #共同列的列名
    merge(test1,test3,by.x = "name",by.y = "NAME")
    
  • 6)如果列名顺序错乱,如何按照指定顺序重排?

https://mp.weixin.qq.com/s/rA92iZS8HUiuwlyrPirHdA

10.列表(list)

长度可以不同、数据类型可以不同 向量 数据框 矩阵或数据框 列表 没有行和列的概念,可以有多级元素

image-20201120153917317.png
  • 列表新建和取子集

    l <- list(m = matrix(1:9, nrow = 3),
          df = data.frame(gene = paste0("gene",1:3), sam = paste0("sample",1:3), exp = c(32,34,45)),
          x = c(1,3,5))
          
    [[2]] l$df        #取子集
    

11.删除变量

 rm(l)          #删除一个
 rm(df,m)       #删除多个
 rm(list = ls())        #删除全部
 ctrl+l         #清空控制台

12.元素的“名字”-names()

元素可命名,用函数names(),可根据名字提取子集,向量、数据框、列表通用。

image-20201121162646036.png

相关文章

  • Part2:数据类型和向量

    Part2:数据类型和向量 1.数据类型 三种类型数值型:1 ,2 字符型:’a' 'm'逻辑型TRUE...

  • 学习小组Day5笔记--Drku

    今天主要是关于向量、数据框、向量及数据框的提取介绍。 Part1 一 1 生成向量 一 2 提取向量 Part2 ...

  • R语言初级教程(09): 向量(上篇)

    向量(vector)是R语言最基本的数据类型。向量中的元素必须为同一属性,常见的向量类型有数值型向量、字符型向量和...

  • 学习小组Day5笔记--徐沫沫

    理解数据类型:向量和数据框 part1: 向量 1. 向量 区分标量和向量“元素” 指的是数字或者字符串(用chr...

  • R数据结构及子集提取

    R的数据结构和数据类型 向量(vector) 一维结构。向量中的所有元素必须是相同数据类型。 数值型向量 Nume...

  • 03-GLSL 语法

    变量和数据类型 向量数据类型 矩阵 const 结构体 数组 函数 控制语句 向量数据类型vec2,vec3,ve...

  • Day 5 letitgo 数据类型

    一 数据类型 1. 向量(vector) 1.标量和向量的区别 元素:指数字或字符串标量:一个元素组成的变量向量:...

  • 学习小组Day5-格帆

    数据类型 Part1 向量 1.标量和向量的区分 标量:一个元素组成的变量向量:多个元素组成的变量 2.变量赋值:...

  • 学习小组Day5笔记-Bonnie

    数据结构 生信星球后台“数据类型”可以获得示例数据 数据类型 主要学习向量、数据框1.向量从向量中提取元素 根据元...

  • Neon intrinsics指令使用记录

    1.neon数据类型 普通向量:分64bit向量和128bit向量,64bit时操作的是寄存器DWORD,128b...

网友评论

    本文标题:Part2:数据类型和向量

    本文链接:https://www.haomeiwen.com/subject/qxtdnktx.html