今天学习的内容主要是围绕 R 的向量展开
(1)用函数 c() (注意是小写的c(),大写的C()是另外的函数)逐一放到一起,例:
x=c(1,3,"a")
#> x
#[1] "1" "3" "a"
(2)生成连续数字可以采用 “:” ,例:
x=1:5
#> x
#[1] 1 2 3 4 5
(3)生成重复值用rep(),有规律的用seq()(类似等差数列),随机数用rnorm()
x1=rep('x',times=3) #生成由3个字符x组成的向量
#其中times是第1个参数,因此可以省略,简写如下
x1=rep('x',3)
#> x1
#[1] "x" "x" "x"
x2=seq(from=3,to=21,by=3) #生成从3开始,21结束,间隔为3的向量
#这里的参数名也可以省略,简写如下
x2=seq(3,21,3)
#> x2
#[1] 3 6 9 12 15 18 21
x3=rnorm(n=3) #生成3个随机数
#适合于希望得到没有太明显规律的数据时
(4)通过组合,产生更为复杂的向量
paste0(rep('x',times=3),1:3)
#[1] "x1" "x2" "x3"
(1)赋值
规范的赋值符号:<- (在windows中 alt键 + 0右侧的减号 可以快速打出来)
现在同样可以使用:=
#赋值+输出同时实现的方式
(x=c(1,2,5))
#[1] 1 2 5
x=c(1,2,5);x
#[1] 1 2 5
#其中 “;” 使R中两句或多句代码可以写在同一行上,否则会报错
!!变量名称不允许以数字开头,也不可以包括空格和减号,可以使用_代替空格,用.代替-
例如命名为,'x_1','x.daytime'
(2)初级统计(极其常用,要背诵)
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #综合
length(x) #长度
unique(x) #去重复,保留第一个,去掉随后重复值,仍然为向量
duplicated(x) #返回逻辑值,无重复时为FALSE,随后每一次重复为TRUE
table(x) #重复值统计
sort(x) #默认从小到大排序
!!R 能用函数代替的,就不要手动操作,这样才能应对变化的情况
首先考虑两个向量长度一致的情况
(1)比较运算 ,可生成等长的逻辑向量,即“==”,“!=”,“>”,“<”
(2)数学计算
(3)连接
paste() #paste(...,sep=' '),可以连接多个向量,间隔默认是空格
paste0() #paste0()=paste(sep=''),也就是0距离连接
以上三个均为等位运算,也就是 向量与向量 | 元素与元素 之间一对一的计算
!!当两个向量长度不一致:发生循环补齐,即把短的那个循环重复,无论这个向量在==号前还是后
循环补齐发生的条件:
1、等位运算
2.两个向量长度不等
#因此,可以利用循环补齐简化代码
paste0(rep('student',times=7),seq(from=2,to=15,by=2))
#利用循环补齐简化如下
paste0('student',seq(2,15,2))
(4)集合运算(不是等位运算)
intersect() #交
union() #并
setdiff(x,y) #补,注意有先后顺序
x=c(1,2,3,4)
y=c(2,2,3,4)
setdiff(x,y)
#[1] 1
setdiff(y,x)
#numeric(0)
x %in% y #x的每个元素都在y中吗,返回x向量等长的逻辑值
#[1] FALSE TRUE TRUE TRUE
(1)按照逻辑值:中括号内需长度相等且一一对应,这个过程把TRUE对应的值挑选出来,FALSE丢弃
(2)按照下标
依据向量的下标(索引,index)修改
x[4] = 40
x[c(1,5)]=c(2,4)
!!R里面的修改需要经过赋值,没有赋值就相当于没有修改过
k1=rnorm(12);k1 #这是随机数,随机的数不同,后面的图也不会相同,很正常
plot(k1) #该图横坐标是下标,即k1的下标12个数字
k2=rep(c('a','b','c','d'),each=3);k2
boxplot(k1~k2) #以k1为纵坐标,k2为横坐标画图
rep('x',times=3)
#[1] "x" "x" "x"
rep(c('x','y'),times=3)
#[1] "x" "y" "x" "y" "x" "y"
rep(c('x','y'),times=c(1,2))
#[1] "x" "y" "y"
rep(c('x','y'),each=3)
#[1] "x" "x" "x" "y" "y" "y"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。