- 数据结构:向量,数据框,矩阵,列表
- 数据框中的一列只能是一种数据类型,一列是一个向量
- 一个向量只能有一种数据类型,可以有重复值。
- 数据类型转换的优先顺序: 数值型转换为字符型,逻辑型转换为字符型,逻辑型转换为数值型(TRUE=1,6.FALSE=0),数值型转换为数值型(0 = FALSE ,非0的都为TURE)
- == 是将X中的每个元素和y中的每个元素一对一比较,%in%是将x中的每一个元素分别和y中的所有元素全部比较
- 命令提示符 " > "
- 中括号取子集, 按照逻辑值:元素 和 括号中的逻辑值向量需要一一对应 按照位置:中括号里是由下标位置组成的向量
- 修改后需要赋值才能生效
#(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("x",times=3)undefined1 "x" "x" "x" seq(from=3,to=21,by=3) 1 3 6 9 12 15 18 21 rnorm(n=3) 1 0.4578182 0.4485371 -0.5944111 #(4)通过组合,产生更为复杂的向量。
paste0(rep("x",times=3),1:3) 1 "x1" "x2" "x3" paste(rep("x",times=3),1:3) 1 "x 1" "x 2" "x 3" paste(rep("x",times=3),1:3, sep = "_") 1 "x_1" "x_2" "x_3"
#####2.2对单个向量进行的操作####
#(1)赋值给一个变量名
x = c(1,3,5,1) #随意的写法 x 1 1 3 5 1 x <- c(1,3,5,1) #规范的赋值符号 Alt 减号 x 1 1 3 5 1 #赋值 输出一起实现
x <- c(1,3,5,1);x 1 1 3 5 1 (x <- c(1,3,5,1)) 1 1 3 5 1
#(2)简单数学计算
x 1 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>3 1 FALSE FALSE TRUE FALSE x==3 1 FALSE TRUE FALSE FALSE
#(4)初级统计
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) #去重复 重复的定义,从左往右数出现第2次、第n次出现的元素,只保留第一次出现的元素 1 1 3 5 duplicated(x) #判断对应元素是否重复 第2次,n次出现的元素为重复TRUEundefined1 FALSE FALSE FALSE TRUE !duplicated(x) 1 TRUE TRUE TRUE FALSE 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
#####2.3.对两个向量进行的操作#####
x = c(1,3,5,1) y = c(3,2,5,6) #(1)比较运算,生成等长的逻辑向量 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"
#循环补齐:等位运算时,两个向量长度不一样,会循环短的向量
a = c(3,2,5) b = c(2,2,2,2,2,2,2,2,9) a==b 1 FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
#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"
#当两个向量长度不一致
x = c(1,3,5,6,2) y = c(3,2,5) x == y # 啊!warning! 1 FALSE FALSE TRUE FALSE TRUE
Warning message:
In x == y : longer object length is not a multiple of shorter object length
#循环补齐--看ppt
#利用循环补齐简化代码
paste0(rep("x",3),1:3) 1 "x1" "x2" "x3" paste0("x",1:3) 1 "x1" "x2" "x3" x = c(1,3,5,6,2) y = c(3,2,5) #(4)交集、并集、差集
intersect(x,y) 1 3 5 2 union(x,y) 1 1 3 5 6 2 setdiff(x,y)#在x中存在,y中不存在 1 1 6 setdiff(y,x)#在y中存在,x中不存在 numeric(0) x %in% y #x的每个元素在y中存在吗 1 FALSE TRUE TRUE FALSE TRUE y %in% x #y的每个元素在x中存在吗 1 TRUE TRUE TRUE
#####2.4.向量筛选(取子集)--看ppt#####
筛选undefinedx <- 8:12 #根据逻辑值取子集 xx==10 10 xx<12 8 9 10 11
xx %in% c(9,13) 9
#根据位置取子集 x4 11