R语言学习笔记(一)--变量和数据

R语言学习笔记(一)

  • 01数据类型
    • 声明变量
    • 赋值运算符的类型
    • 创建一个复数类型的两种方法
    • factor()将向量转换为因子类型
    • 查看对象的基本属性
    • 判别&转换数据类型的函数:
    • R语言中的特殊变量:
  • 02运算符
    • 算术运算:
    • 矩阵相乘
    • 循环补齐
      • 逻辑运算符
      • 逻辑函数
      • 判断缺失数据
  • 03产生有规律的数据
    • 等差数列
      • seq()函数
      • rep()函数
      • 均匀分布的随机数runif()
      • 正态分布随机数rnorm()
      • 抽样函数sample()
      • 连接成字符串函数paste()

01数据类型

声明变量

和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中每一个进行比较得到逻辑型向量

创建一个复数类型的两种方法

  1. 直接声明
  2. 利用complex( )函数
com1=2+3i;com2=complex(real = 2,imaginary = 5)
com=c(com1,com2)
Re(com) # 获得所有复数的实部
Im(com) # 获得所有复数的虚部
Conj(com1) # 计算复数的共轭复数

factor()将向量转换为因子类型

分类变量的整数表示,加快处理速度

sex<-factor(c('Male','Male','Female','Male','Female'))
sex # 不带双引号,本质上把Female作为1,Male作为2
#打印结果:
'''
> sex
[1] Male   Male   Female Male   Female
Levels: Female Male
'''

查看对象的基本属性

R语言学习笔记(一)--变量和数据_第1张图片

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 

判别&转换数据类型的函数:

R语言学习笔记(一)--变量和数据_第2张图片

a<-c('100','251','13','46')
a<-as.numeric(a)# 转换为了double类型
a<-as.integer(a)# 转换为整数类型

R语言中的特殊变量:

变量 含义
Inf 无穷大;1/0=Inf
NaN 不确定;0/0=NaN
NA 缺失值
NULL 空对象

02运算符

算术运算:

  • 基本的:
    加 减 乘 除 乘方 + - * / ^
  • 特殊的:
    整除:%/%
    余数:%%
    矩阵乘法:%*%
    R语言中,+等其实是运算符函数
`+`(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
'''

逻辑运算符

大于>;小于>;
大于等于>=;小于等于<=
等于==;不等于 !=

或与非:| & !

逻辑函数

  1. all()判断是否所有元素都为真
  2. any()判断是否至少有一个元素为真
  3. which()获取逻辑向量中哪些下标为真
> 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))]

03产生有规律的数据

注意!!!
1:n-1不是产生1到n-1的向量,而是1到n的向量再减1
R语言学习笔记(一)--变量和数据_第3张图片

等差数列

seq()函数

参数 含义
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

rep()函数

参数 含义
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

均匀分布的随机数runif()

参数 含义
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)

R语言学习笔记(一)--变量和数据_第4张图片

正态分布随机数rnorm()

参数 含义
n 随机数个数
mean 均值
sd 标准差
score<-rnorm(1000,85,6)
any(score>100)
score<-pmin(score,100)#将比100大的分数全部取100

抽样函数sample()

参数 含义
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()

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]"

你可能感兴趣的:(R学习笔记)