1.数据类型
数值型:可以是整数、小数、科学计数的方式。默认为双精度型数据
字符型:以双引号或单引号夹起来的数据,如"a" ‘a’。
逻辑型:有TRUE和FALSE、NA。
![](https://img.haomeiwen.com/i20866524/34f1e69a84075680.png)
常见报错:引号、拼写错误、大小写
> class(a) Error: object 'a' not found (缺少引号)
> calss("a") Error in calss("a") : could not find function "calss"( 拼写错误)
> class(true) Error: object 'true' not found( 大小写)
> class(TURE) Error: object 'TURE' not found 拼写错误)
> class(3)Error: unexpected input in "class?(中文括号)
2.逻辑型数据
比较运算的结果是逻辑值
>, <, <=, >=, ==, !=
3==5 ····· FALSE
3!=4·······TRUE
逻辑运算 多个逻辑条件的连接与&、或|、非!
3<5&4>5·····TRUE
3<5|4>5·······FALSE
!4>5············TRUE
3.数据类型的判断和转化
(1)is族函数,判断,返回值为TRUE或 FALSE
is.numeric() 是否数值型数据 > is.numeric("4") [1] FALSE
is.logical() 是否逻辑型数据
is,character()是否字符型数据
(2)as族函数实现数据类型之间的转换
as.numeric() 将其他数据类型转换为数值型> as.numeric("4") [1] 4
as.logical() 将其他数据类型转换为逻辑型
as.character() 将其他数据类型转换为字符型
4.多个数据如何组织
Ø 数据框约等于“表格”。
Ø 向量则是数据框单独拿出的一列,视为一个整体。
![](https://img.haomeiwen.com/i20866524/902999c1a98fedee.png)
5. 向量的生成
(1)用 c()逐一放到一起
> c(2,5,6,2,9)
[1] 2 5 6 2 9
> c("a","f","md","b")
[1] "a" "f" "md" "b"
(2)连续的数字用冒号”:”
> 1:5
[1] 1 2 3 4 5
(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm()
> rep("gene",times=3)
[1] "gene" "gene" "gene"
> seq(from=3,to=21,by=3)
[1] 3 6 9 12 15 18 21
> rnorm(n=3)
[1] -1.2882504 -0.8186668 -0.1031025
(4)通过组合,产生更为复杂的向量。>paste0(rep("gene",times=3),1:3)
[1] "gene1" "gene2" "gene3"
6.对单个向量进行的操作
(1)赋值给一个变量名
x = c(1,3,5,6,2) #随意的写法
x
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
7.对两个向量的操作
x = c(1,3,5,1)
y = c(3,2,5,6)
(1)逻辑比较,生成等长的逻辑向量
x == y
[1] FALSE FALSE TRUE FALSE
x %in% y #x的元素是否在y中
[1] FALSE TRUE TRUE FALSE
(2)数学计算
x + y
[1] 4 5 10 7
(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
8.x 和 y不一样长:理解一下循环补齐
![](https://img.haomeiwen.com/i20866524/2b5683bc24f0de95.png)
利用循环补齐简化代码
paste0(rep(“gene”,3),1:3)
paste0(“gene”,1:3)
## [1] "gene1" "gene2" "gene3"
![](https://img.haomeiwen.com/i20866524/55cd6a03ea0c3c79.png)
9.向量筛选(取子集)
** [ ]:将TRUE对应的值挑选出来,FALSE丢弃**
![](https://img.haomeiwen.com/i20866524/b9fc207ece7b5a99.png)
![](https://img.haomeiwen.com/i20866524/575fe5b979cc1d47.png)
10.如何修改向量中的某个/某些元素?
x <- c( 8 9 10 11 12); 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
11.向量匹配排序-match
x <- c("A","B","C","D","E")
y <- c("B","D","E","A","C")
match(x,y)
#[1] 4 1 5 2 3
y[match(x,y)]
#[1] "A" "B" "C" "D" "E"
x[match(y,x)]
#[1] "B" "D" "E" "A" "C"
![](https://img.haomeiwen.com/i20866524/33dee73886fda7d9.png)
网友评论