学习笔记Day2:数据类型和向量【R】

数据类型和向量

数据类型

数据的属性

  1. 数值型: 1.3 2.5
  2. 字符型:“a”,‘abc’(单双引号都可以,但要成对出现)
  3. 逻辑型:TRUE(T)/FALSE(F)/NA 必须纯大写或单字母
  • NULL:无;N/A:缺失值(存在但未知,可以是任何数据类型)
  • 判断数据类型:class()

逻辑型数据

比较运算的结果

>,<
<=,>=
==,!=           #是否相等和是否不相等

逻辑运算的结果 & | !

3<5&3>5        FALSE
3<5|3>5         TRUE
!3>5            TRUE           #支持向量

数据类型的判断和转换

  • is族函数:判断数据类型,返回值为T/F
    is.numeric() 是否数值型数据
    is.logical() 是否逻辑型数据
    is.character() 是否字符型数据
  • as族函数实现数据类型之间的转换
    as.numeric() 将其他类型转换为数值
    as.logical() 将其他类型转换为逻辑型
    as.character() 将其他类型转换为字符型
    不是所有数据都能转换

数据结构

多个数据如何共存

向量

向量的组成部分是元素,长度为元素的数量。

向量的生成:
  1. 用c() 放到一起
c(2,5,6,2,9)
## [1] 2 5 6 2 9
  1. 连续数字用:
1:5
## [1] 1 2 3 4 5
  1. 有重复用rep(),有规律序列用seq(),随机数用rnorm()
rep('x',times=3)
## [1] "x" "x" "x"
##rep的小Tips
rep(c("a","b","c"),times = 3)
[1] "a" "b" "c" "a" "b" "c" "a" "b" "c"
rep(c("a","b","c"),each = 3)
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c"
rep(c("a","b"),times = c(4,3))
[1] "a" "a" "a" "a" "b" "b" "b"
c(rep("a",4),rep("b",3))
[1] "a" "a" "a" "a" "b" "b" "b"
seq(from=3,to=21,by=3)
## [1]  3  6  9 12 15 18 21
rnorm(n=3)
## [1]  0.7779750 -0.5969681 -0.8879635
  1. 通过组合产生复杂向量
paste0(rep('x',times=3),1:3)
## [1] "x1" "x2" "x3"
paste(rep("x",times = 3),1:3,sep='*')
## [1] "x*1" "x*2" "x*3"

Tips:paste()和paste0()的区别

向量转换

在这里插入图片描述

对单个向量进行的操作
  1. 赋值

    <-规范的赋值符号,快捷键Alt+-

    =也可以用

    • 赋值+输出

      1. (x<-c(1,3,5))
      2. x<-c(1,3,5);x
    • 变量名称的选择:建议使用与意义匹配的字母+数字,可以含有_,第一位不建议使用数字,不建议含有特殊符号,不建议使用通用符号如seq,c等。

      在这里插入图片描述

  2. 简单数学计算:

    x <- c(1,3,5,1)
    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 <- c(1,3,5,1)
    x>3
    ## [1] FALSE FALSE  TRUE FALSE
    x==3
    ## [1] FALSE  TRUE FALSE FALSE
    
  4. 初级统计

    x <- c(1,3,5,1)
    max(x) #最大值
    ## [1] 5
    min(x) #最小值
    ## [1] 1
    mean(x) #均值
    ## [1] 2.5
    median(x) #中位数
    ## [1] 2
    var(x) #方差
    ## [1] 3.666667
    sd(x) #标准差
    ## [1] 1.914854
    sum(x) #总和
    ## [1] 10
    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
    sort(x,decreasing = F)
    ## [1] 1 1 3 5
    sort(x,decreasing = T)
    ## [1] 5 3 1 1
    
  • R语言中的“默认思想”

    ?function:例如?sort可以查看sort()函数的帮助文档

    帮助文档中有函数的一些默认参数,不写参数运行时采用默认参数。

    sort()函数默认降序排列

    在这里插入图片描述

  • 能用函数代替解决,不要手动数!(提高代码的可重复性)

对两个向量的操作
  1. 比较运算,生成等长的逻辑向量(等位运算)

    x = c(1,3,5,1)
    y = c(3,2,5,6)
    x == y 
    ## [1] FALSE FALSE  TRUE FALSE
    y == x
    ## [1] FALSE FALSE  TRUE FALSE
    
  2. 数学计算(等位运算)

    x + y
    ## [1]  4  5 10  7
    
  3. 连接(等位运算)

    paste(x,y,sep=",")
    ## [1] "1,3" "3,2" "5,5" "1,6"
    #paste与paste0的区别
    paste(x,y)
    ## [1] "1 3" "3 2" "5 5" "1 6"
    paste0(x,y)
    ## [1] "13" "32" "55" "16"
    paste(x,y,sep = "")
    ## [1] "13" "32" "55" "16"
    paste(x,y,sep = ",")
    ## [1] "1,3" "3,2" "5,5" "1,6"
    
  • 进行等位运算时,两个向量交互时长度不一样:发生了循环补齐

    将短的向量进行循环补齐(输出结果长度跟着长向量变)

    在这里插入图片描述

  • 利用循环补齐简化代码

    paste0(rep("x",3),1:3)    ##times=3,省略成3
    ## [1] "x1" "x2" "x3"
    paste0("x",1:3)
    ## [1] "x1" "x2" "x3"
    
  1. 交集、并集、差集

    x = c(1,3,5,1)
    y = c(3,2,5,6)
    intersect(x,y)        ##取交集,使用频率很高,**取交集时会去重复,%in%不去重复**
    ## [1] 3 5 
    union(x,y)            ##取并集,自动去重复
    ## [1] 1 3 5 2 6
    setdiff(x,y)          ##在x中有,在y中没有
    ## [1] 1 
    setdiff(y,x)          ##在y中有,在x中没有
    ## [1] 2 6
    
  2. %in%(重要!!)

    x %in% y          #x的每个元素在y中存在吗
    ## [1] FALSE  TRUE  TRUE FALSE
    y %in% x          #y的每个元素在x中存在吗
    ## [1] TRUE FALSE TRUE FALSE
    
  • x == yx %in% y的区别

在这里插入图片描述

向量筛选
  1. 根据逻辑值:[]将TRUE对应的值提取,FALSE丢弃

    x <- 8:12
    #括号内是运算出逻辑值的内容
    x[x == 10]
    ## [1] 10
    x[x < 12]
    ## [1]  8  9 10 11
    x[x %in% c(9,13)]
    ## [1] 9
    

    在这里插入图片描述

    • 中括号中是与x等长一一对应的逻辑值向量
  2. 根据位置:根据[]其中的下标(位置)提取

    x <- 8:12
    x[4]
    ## [1] 11
    x[2:4]
    ## [1]  9 10 11
    x[c(1,5)]
    ## [1]  8 12
    x[-4]                  ##反选
    ## [1]  8  9 10 12
    x[-(2:4)]
    ## [1]  8 12
    

    在这里插入图片描述

    • 中括号里是由x的下标组成的向量
修改向量中的某个/某些元素

取子集+赋值

x
## [1]  8  9 10 11 12
#改一个元素
x[4] <- 40
x
## [1]  8  9 10 40 12
#改多个元素
x[c(1,5)] <- c(80,20)
x
## [1] 80  9 10 40 20

R语言的修改都要赋值,没有赋值就没有发生。

简单向量作图
#### 2.6 简单向量作图
k1 = rnorm(12);k1
##  [1] -0.008380258  1.108085674
##  [3] -0.842194663  0.343340990
##  [5] -0.053610206  0.336025062
##  [7]  1.493091002  0.729210438
##  [9] -0.656146114 -0.168843964
## [11] -0.608738403  0.406507503
k2 = rep(c("a","b","c","d"),each = 3);k2  
#rep的两个参数:'each'和'times'
##  [1] "a" "a" "a" "b" "b" "b"
##  [7] "c" "c" "c" "d" "d" "d"
plot(k1)

在这里插入图片描述

boxplot(k1~k2)   ##k1纵坐标,k2横坐标

在这里插入图片描述

引用自生信技能树课程!给小洁老师比心~

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值