title: "R_01"
output: html_document
date: "2023-11-22"
###🍎🍓🍌🍒🍑🍇🌽——————2.数据类型和结构——————🥕🍅🍍🥝🥥🥑🍠
######🍋🍋🍋2.1 数据类型
#(1)数值型
#(2)字符型(" "或' ')
#(3)逻辑型:比较运算的结果是逻辑值(>,<,<=,>=,==(判断两个数据是否相等),!=)
#逻辑运算 多个逻辑条件连接 与 & 或 | 或!
###判断数据类型的函数
#class()
#is. numeric ();is. logical ();is. character ()
#as. numeric ();as. logical ();as. character () #转换数据类型
######🍋🍋🍋2.2 数据结构
#(1)向量vector
#(2)数据框data.frame
#(3)矩阵matrix
#(4)列表list
###(1)向量(向量的组成部分是元素)
##1.生成向量
c(1,3,5);c("a","b","c") #用c()逐一放到一起
## [1] 1 3 5
## [1] "a" "b" "c"
1:5 #连续数字
## [1] 1 2 3 4 5
rep("x", times = 3) #有重复的
## [1] "x" "x" "x"
seq(from = 3, to = 21, by = 2);seq(3, 21, 2) #有规律的
## [1] 3 5 7 9 11 13 15 17 19 21
## [1] 3 5 7 9 11 13 15 17 19 21
rnorm(n = 3);rnorm(3) #随机数
## [1] -1.2554971 0.1096315 0.4560257
## [1] 0.1210217 0.2712784 -0.1833829
paste0(rep("x", times = 3),1:3);paste0(rep("x", 3), 1:3) #组合
## [1] "x1" "x2" "x3"
## [1] "x1" "x2" "x3"
##2.对单个向量的操作
#赋值
x <- c(1,3,5) #规范的赋值符号 快捷键Alt + -
x = c(1,3,5) #随意的写法
(x <- c(1,3,5)) #赋值+输出
## [1] 1 3 5
x <- c(1,3,5);x #两句或多句代码写在同一行上
## [1] 1 3 5
#简单数学计算
x <- c(1,3,5)
x + 1
## [1] 2 4 6
log(x)
## [1] 0.000000 1.098612 1.609438
sqrt(x)
## [1] 1.000000 1.732051 2.236068
#根据某条件进行判断(比较运算),生成与x等长的逻辑值向量
x <- c(1,3,5)
x > 3
## [1] FALSE FALSE TRUE
x == 3
## [1] FALSE TRUE FALSE
#初级统计
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) #判断X里的每个数字是否发生了重复,返回值为逻辑值
## [1] FALSE FALSE FALSE TRUE
table(x) #重复值统计
## x
## 1 3 5
## 2 1 1
sort(x) #排序,默认升序sort(x, decreasing = F),改为降序sort(x, decreasing = T)
## [1] 1 1 3 5
##3.对两个向量的操作
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
x + y
## [1] 4 5 10 7
x * y #数学计算
## [1] 3 6 25 6
paste(x, y, sep = ",") #连接
## [1] "1,3" "3,2" "5,5" "1,6"
paste0(x,y)
## [1] "13" "32" "55" "16"
paste(x,y)
## [1] "1 3" "3 2" "5 5" "1 6"
paste(x, y, sep = "") #区别paste和paste0函数,?paste
## [1] "13" "32" "55" "16"
#当两个向量长度不一致,发生循环补齐
a <- c(1,3,5,1)
b <- c(3,2,5)
a == b #循环补齐发生条件: {等位运算(数学计算,比较运算,past,past0),长度不等}
## [1] FALSE FALSE TRUE FALSE
x <- c(1,3,5,1)
y <- c(3,2,5,6)
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
#%in%,生成逻辑值
x %in% y #x的每个元素在y中存在吗,生成与x等长的逻辑值
## [1] FALSE TRUE TRUE FALSE
y %in% x #y的每个元素在x中存在吗,生成与y等长的逻辑值
## [1] TRUE FALSE TRUE FALSE
##4.向量筛选(取子集):[]
#按照逻辑值:中括号里是与x等长且一一对应的逻辑值向量
df4 <- 8:12;df4
## [1] 8 9 10 11 12
df4[df4 == 10]
## [1] 10
df4[df4 < 12]
## [1] 8 9 10 11
df4[df4 %in% c(9,13)]
## [1] 9
#按照位置:中括号里是由下标组成的向量
df5 <- 8:12;df5
## [1] 8 9 10 11 12
df5[4] #第4列
## [1] 11
df5[2:4] #第2-4列
## [1] 9 10 11
df5[c(2,4)] #第2列和第4列,不可以直接写成df5[2,4]
## [1] 9 11
df5[-4] #除去第四列
## [1] 8 9 10 12
df5[-(2:4)] #除去第2-4列
## [1] 8 12
##5.修改向量中的某个/某些元素:取子集+赋值
##⭐⭐⭐R语言里的修改,都要赋值,没有赋值就没有发生过
df4 <- 8:12;df4
## [1] 8 9 10 11 12
df4[4] <- 40;df4 #改一个元素
## [1] 8 9 10 40 12
df4[c(1,5)] <- c(80,20);df4 #改多个元素
## [1] 80 9 10 40 20
df4 <- 8:12;df4
## [1] 8 9 10 11 12
##6.简单向量作图
k1 <- rnorm(12);k1
## [1] -0.307092657 0.017104177 -1.783921671 -0.895333237 0.002782607
## [6] -0.289644951 -0.017758148 1.575684979 -1.369380688 1.260489106
## [11] 0.863698565 -0.484026978
k2 <- rep(c("a", "b", "c", "d"), each = 3);k2
## [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
plot(k1)
boxplot(k1~k2)
##向量部分结束
引用自生信技能树
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。