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 删除。