2020.9.7丨生信基础巩固R篇(二)之数据基本概念

  • 2.1 变量和常量
    • 变量:用来保存输入或计算的值的东西
  • 2.2 R语言的变量命名
    • 只有字母(区分大小写),数字,下划线,英文点号可以出现
    • 数字和下划线不能开头
    • 英文点号后面不能直接接数字
  • 2.3 数据类型
    • 2.3.1 数值 numeric
    • 2.3.2 字符 character
    • 2.3.3 逻辑 logical
      • 只有两个值TRUE和FALSE,缺失时为NA
      • 逻辑运算符:< <= == != > >= %in%
      • x %in% y 把y当做一个集合,将x中的每一个元素对y集合进行运算,从而得到一个逻辑型向量。
      • &,|,!运算符分别表示与或非 &&和||分别表示短路的标量逻辑与和短路的标量逻辑或
    • 2.3.4 因子factor
      • 是名义型变量或有序型变量,一个因子不仅包括分类变量本身,还包括变量的可能的水平(即使他们在数据中没有出现)
      • #factor(x,levels=sort(unique(x),na.last=TRUE), labels=lebels, exclude=NA, ordered=is.order (x))
      • #其中,levels用于指定因子的可能水平;labels用于定义levels的名字;exclude指从向量x中剔除的水平值;ordered指因子的levels是否要排序
    • 2.3.5 类型转换
      • as.numeric()
      • as.character()
      • factor(c(as.character(x1), as.character(x2)))
  • 2.4 数据结构
    • 2.4.1 向量vector
      • 是将若干个基础类型相同的值储存在一起,各个元素可以按照序号进行访问。 向量从1开始,要访问向量x的第n个元素,写为x[n] 如果是负整数下标,表示扣除相应元素后的子集 向量只能对自己整数倍(或者被整数倍)的向量进行运算,每次都会从头重新利用短的一个。 向量的运算:+ - * / ^ %/% %% (加减乘除乘方整除取余)
    • 2.4.2 矩阵matrix
      • 用matrix函数定义,实际储存成一个向量,根据保存的行数和列数对应到矩阵的元素,存储次序为按列存储。例:
      • A <- matrix(11:16, nrow=3, ncol=2); print(A)
      • ## [,1] [,2]
      • ## [1,] 11 14
      • ## [2,] 12 15
      • ## [3,] 13 16
      • 矩阵可以利用方括号取出指定的行列的子矩阵 用colnames()函数可以给矩阵每列命名, 也可以访问矩阵列名, 用rownames()函数可以给矩阵每行命名, 也可以访问矩阵行名。如
      • colnames(A) <- c('X', 'Y')rownames(A) <- c('a', 'b', 'c')A
      • ## X Y
        • ## a 11 14
        • ## b 12 15
        • ## c 13 16
      • A[,'Y']
        • ## a b c
        • ## 14 15 16
      • A['b',]
        • ## X Y
        • ## 12 15
      • A[c('a', 'c'), 'Y']
        • ## a c
        • ## 14 16
      • 矩阵的本质是多了一个dim属性的向量,元素次序按列填入。所以也可以像向量一样,仅用一个正整数将向量的矩阵取子集
      • A[c(1,3,5)]
      • ## [1] 11 13 15
      • 矩阵运算,两个相同形状的矩阵“+”,“-”,“*”,“/”的时候,表示对应元素进行运算。
      • “%*%”表示数学意义上的矩阵乘法
    • 2.4.3 数组array
      • 矩阵是二维的数组,dim是控制其中的维数的参数
      • ara <- array(1:24, dim=c(2,3,4)); ara
      • ## , , 1
      • ##
      • ## [,1] [,2] [,3]
      • ## [1,] 1 3 5
      • ## [2,] 2 4 6
      • ##
      • ## , , 2
      • ##
      • ## [,1] [,2] [,3]
      • ## [1,] 7 9 11
      • ## [2,] 8 10 12
      • ##
      • ## , , 3
      • ##
      • ## [,1] [,2] [,3]
      • ## [1,] 13 15 17
      • ## [2,] 14 16 18
      • ##
      • ## , , 4
      • ##
      • ## [,1] [,2] [,3]
      • ## [1,] 19 21 23
      • ## [2,] 20 22 24
      • 用法上基本和矩阵一致
    • 2.4.4 列表list
      • 列表可以有多个元素,但与向量不同的是,列表的元素之间可以是不同的类型
      • rec <- list(name="李明", age=30, scores=c(85, 76, 90))rec
      • ## $name
      • ## [1] "李明"
      • ##
      • ## $age
      • ## [1] 30
      • ##
      • ## $scores
      • ## [1] 85 76 90
      • #访问单个列表的元素必须使用两重方括号格式进行访问或者用“$”进行访问rec[[3]]
      • ## [1] 85 76 90
      • rec$scores
      • ## [1] 85 76 90
      • 如果采用单重方括号,取到的仍然是一个列表 另外必须注意列表是一个一维的数据,因此不可以使用类似矩阵一样的方法来提取列表中的内容。
    • 2.4.5 数据框data.frame
      • 类似于数据库或者Excel表的格式。这样的格式在R中被叫做数据框,数据框类似于矩阵,但是允许有不同的数据类型。R数据框是一个特殊的列表,每个列表元素都是一个长度相等的向量。 data.frame()函数会将字符型列转换成因子, 加选项stringsAsFactors=FALSE可以避免这样的转换。 数据框的行名 数据框可以用矩阵的格式访问,也可以使用列表一样的方式进行访问
      • d <- data.frame( name=c("李明", "张聪", "王建"), age=c(30, 35, 28), height=c(180, 162, 175), stringsAsFactors=FALSE)print(d)
      • ## name age height## 1 李明 30 180## 2 张聪 35 162## 3 王建 28 175
      •  
      • d[2,3]
      • ## [1] 162
      •  
      • d[[2]]
      • ## [1] 30 35 28
      •  
      • d["age"]
      • ## # A tibble: 3 x 1## age## <dbl>## 1 30## 2 35## 3 28
      •  
      • d$age
      • ## [1] 30 35 28
      •  
      • d[1:2,"age"]
      • ## [1] 30 35
    • 2.5 R中的循环和条件判断
      • x=vector()for(i in c(1:100)){ if(i%%2 ==1){ x[length(x)+1] <- i }}x
      • ## [1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
      • ## [26] 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
    • 2.6 R的文本处理函数
      • #合成字符library(stringr)str_c(c("x","y"),c("a","b"),sep ="*")
      • ## [1] "x*a" "y*b"
      • str_c(c("a", "bc", "def"), collapse="--")
      • ## [1] "a--bc--def"
      •  
      • name <- "zhangsan
      • "tele <-110120
      • str_glue("姓名: {name}", "电话号码: {tele}", .sep="; ")
      • ## 姓名: zhangsan; 电话号码: 110120
      •  
      • #字符格式
      • sprintf("%1dx%1d=%2d", 1:5, 5:1, (1:5)*(5:1))
      • ## [1] "1x5= 5" "2x4= 8" "3x3= 9" "4x2= 8" "5x1= 5"
      •  
      • #其中%d表示输出整数,%f表示输出实数, %02d表示输出宽度为2、不够左填0的整数, %6.2f表示输出宽度为6、宽度不足时左填空格、含两位小数的实数, 等等#字符串长度str_length(c("a", "bc", "def", "北京"))
      • ## [1] 1 2 3 2
      •  
      • #取子字符串str_sub("term2017", 5, 8)
      • ## [1] "2017"
      •  
      • str_sub("term2017", -4, -1)
      • ## [1] "2017"
      •  
      • #特殊字符:如"\n"表示换行符, "\t"表示制表符, "\r"表示回车符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆易青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值