和python不同,变量可以取带有英文. 的名称
a<-100
score.Tony<-99 # 不会报错
普通的有 <-、=、->
1+1;2+3;6^2 # 一行有多条命令,用;分隔开
# 赋值运算符
x<-100
x
x=200
x
300->x
x
超赋值运算符 <<-、->>
x<<-400
500->>x # 后两种方法是超赋值运算,可以访问函数外的变量
cities<- c('北京','上海','广州','深圳') # 创建向量
ls() # 看见所有赋值过的变量名称
rm(a);remove(x) # 两种清除变量的方式,rm和remove是一样的
注意:R语言的向量下标从1开始
cities[1]# 打印出来'北京'
mode(cities);typeof(cities)
mode(x);typeof(x)
第一个显示模式,大的类型数值;第二个是小的类型双精度
x<-c(10,32,53,14,5)
mode(x);typeof(x)
x<-as.integer(x) # 把x转换为int类型而不是原来的double类型
length(x) # 向量的长度
nchar(cities) # 向量内每个字符串的长度
sentences='妈妈说:"洗手吃饭!"'
print(sentences,quote='F')
# 打印时去掉两侧的双引号,F是FALSE
flags<-c(TRUE,FALSE,F,F,T)
mode(flags)
weight<-cities=='北京' # 和cities中每一个进行比较得到逻辑型向量
com1=2+3i;com2=complex(real = 2,imaginary = 5)
com=c(com1,com2)
Re(com) # 获得所有复数的实部
Im(com) # 获得所有复数的虚部
Conj(com1) # 计算复数的共轭复数
分类变量的整数表示,加快处理速度
sex<-factor(c('Male','Male','Female','Male','Female'))
sex # 不带双引号,本质上把Female作为1,Male作为2
#打印结果:
'''
> sex
[1] Male Male Female Male Female
Levels: Female Male
'''
class(sex);mode(sex);typeof(sex);str(sex)
# 分别查看对象的大类、内部的小类、细类以及数据的结构
#打印结果:
'''
> class(sex);mode(sex);typeof(sex);str(sex)
[1] "factor"
[1] "numeric"
[1] "integer"
Factor w/ 2 levels "Female","Male": 2 2 1 2 1
'''
dim(x)# 一维的返回NULL
x<- matrix(1:12,nrow = 3)
x
dim(x)# 二维的返回3 4
a<-c('100','251','13','46')
a<-as.numeric(a)# 转换为了double类型
a<-as.integer(a)# 转换为整数类型
变量 | 含义 |
---|---|
Inf | 无穷大;1/0=Inf |
NaN | 不确定;0/0=NaN |
NA | 缺失值 |
NULL | 空对象 |
`+`(1,5)
''' 输出6'''
`/`(6,2)
''' 输出3'''
c(1:6)*c(2,2,2,2,2,2)
'''
> c(1:6)*c(2,2,2,2,2,2)
[1] 2 4 6 8 10 12
'''
a2<-c(1:6)%*%c(2,2,2,2,2,2)
a2
'''
> a2
[,1]
[1,] 42
'''
如果两个长度不同的向量进行运算,R语言会自动补齐短向量来适应运算
# 5不是2的倍数,所以警告
> c(1,2,3)+c(10,10,10,10,10)
[1] 11 12 13 11 12
'''Warning message:
In c(1, 2, 3) + c(10, 10, 10, 10, 10) :
longer object length is not a multiple of shorter object length'''
> c(1,2,3)+c(10,10,10,10,10,10)
[1] 11 12 13 11 12 13
'''
大于>;小于>;
大于等于>=;小于等于<=
等于==;不等于 !=
或与非:| & !
> all(c(T,T,T,F,T,T))
[1] FALSE
> any(c(T,T,T,F,T,T))
[1] TRUE
> which(c(T,T,T,F,T,T))
[1] 1 2 3 5 6
# 判断缺失数据
score=c(66,88,76,95,NA,65,82)
> is.na(score)
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE
> any(is.na(score))
[1] TRUE
去掉缺失值
score<-score[which(!is.na(score))]
注意!!!
1:n-1不是产生1到n-1的向量,而是1到n的向量再减1
参数 | 含义 |
---|---|
from | 序列的开始值 |
to | 终止值 |
by | 步长 |
length.out | 序列的总长 |
along.with | 与另一个向量长度一致 |
> seq(from=2,to=20,by=4)
[1] 2 6 10 14 18
> seq(from=0,to=20,length.out = 6)
[1] 0 4 8 12 16 20
参数 | 含义 |
---|---|
times | 表示向量x的重复次数 |
each | 表示每个元素出现的次数 |
length.out | 重复后产生的向量的长度 |
> rep(1:4,times=2,each=3)#2表示1-4整体重复2遍
[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
> rep(1:4,length.out=10)
[1] 1 2 3 4 1 2 3 4 1 2
参数 | 含义 |
---|---|
n | 随机数个数 (观测数据) |
min | 最小值(下限) |
max | 最大值(上限) |
> runif(10,0,1)
[1] 0.57219133 0.75797086 0.63737904 0.08635545 0.83004433 0.37391578
[7] 0.12021769 0.48147331 0.59559635 0.36853139
> runif(5,10,20)
[1] 15.55731 14.62614 19.34402 19.77089 16.20681
> x<-runif(2000,1,10)
> plot(x)
参数 | 含义 |
---|---|
n | 随机数个数 |
mean | 均值 |
sd | 标准差 |
score<-rnorm(1000,85,6)
any(score>100)
score<-pmin(score,100)#将比100大的分数全部取100
参数 | 含义 |
---|---|
x | 被取样的向量 |
size | 产生的数据个数 |
replace | 是否允许重复取样 |
prob | 取每个个体的概率 |
> sample(0:100,10) # 最简单的抽样
[1] 15 28 35 71 59 75 13 94 80 14
> sample(1:5,20,replace = T) # 抽样次数>总体
[1] 5 1 1 2 2 3 4 4 5 2 4 4 3 3 5 2 1 4 4 5
> sex<-sample(c('Male','Female'),200,replace = T, prob = c(0.3,0.7))
> #给定抽取的概率
> table(sex)#进行统计
sex
Female Male
141 59
paste()默认sep=’’空格‘
paste0()默认sep=‘’
> students<- paste('学生',1:10)
> students
[1] "学生 1" "学生 2" "学生 3" "学生 4" "学生 5" "学生 6" "学生 7"
[8] "学生 8" "学生 9" "学生 10"
> A<- paste('A',1:10,sep = '-')
> A
[1] "A-1" "A-2" "A-3" "A-4" "A-5" "A-6" "A-7" "A-8" "A-9" "A-10"
> paste(c('A','B','C'),100:108,'@qq.com',sep = '')
[1] "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]"
[6] "[email protected]" "[email protected]" "[email protected]" "[email protected]"
> paste0(c('A','B','C'),100:108,'@163.com')
[1] "[email protected]" "[email protected]" "[email protected]" "[email protected]"
[5] "[email protected]" "[email protected]" "[email protected]" "[email protected]"
[9] "[email protected]"