二、数据类型

一、单变量

我起的名字,仅作临时教学使用,学到向量以后忘记即可

1. 数据类型

R语言的数据类型大体有三种:

名称 内部名 示例
字符型 character "1", "abc"
数值型 numeric 2067, 20.67
逻辑型 logical TRUE, T

数值型变量还有还有一些特殊类型:

名称 内部名 示例
整数型 interger 20L, 67L
浮点型 double 20.67
复数型 complex complex(real = 1, imaginary = 2)

另外有一些特殊值:

NULL NA NaN Inf
空值 缺省值 非数字 无穷大

2. 变量操作

a) 命名

R 语言的有效的变量名称由字母A-Za-z,数字0-9以及点号. 或下划线_组成,变量名称以字母或点开头,注意:.号开头后面不能紧跟着数字

b) 赋值

R语言支持左右箭头-><- 以及等号=赋值,运算优先级依次降低

<-:可以用alt + -快捷打出,优先级极高,常用于变量赋值

= :优先级低,常用于函数使用时参数赋值(见后)

->:由于影响代码可读性,不推荐使用

c) 查看

单独输入变量或数据即可,例如

r 复制代码
wind <- 2067;
wind
#[1] 2067
"wind_2067"
#[1] "wind_2067"

当输入内容过多过长时,控制台会智能换行,[]内的数字表示随后紧跟数据的序号

3. 常用函数

  • 删除变量-rm(变量名)

注意:删除变量需要确保该变量存在

r 复制代码
a <- 2067
rm(a)
rm(a)
# 警告信息:In rm(a) : 找不到对象'a'

进阶用法后续再讲

  • 查看所有变量-ls()

注意:基于R语言的特性,创建过的变量,除非手动删除或重新打开项目,否则改了代码也依然存在,例如:

r 复制代码
wi <- 20
nd <- 67
ls() #[1] "nd" "wi"

# 代码删去第一行,不关闭项目
nd <- 67
ls() #[1] "nd" "wi"

# 删除nd变量
rm(nd)
ls() #[1] "wi"
  • 获取数据类型-class()
r 复制代码
class(2067)
#[1] "numeric"

由于历史遗留问题,也可以使用mode() 获取数据类型,不建议使用

  • 获取底层储存类型(更精细)-typeof()
r 复制代码
typeof(2)
#[1] "double"
  • 判断变量相等-identical(变量1, 变量2)
r 复制代码
identical("wind", 2067)
#[1] FALSE
  • 强制转换-as.类型(变量)

兼容:字符 > 数值 > 逻辑

高兼容向低兼容强转可能导致错误,如:as.logical("a")将返回NA

不同路径的强转结果不一定相同,如:T → 1 → "1",T → "TRUE"

学过C嘎嘎的程序猿们注意啦,这里不是as的方法,只是命名里带了个.而已

二、向量

向量 化操作是R语言的核心,R语言所有数据的储存都基于向量(vector)结构

所谓"单变量"是长度为1的向量

1. 创建

  • 创建连续整数向量-:
r 复制代码
-2 : 7
#[1] -2 -1  0  1  2  3  4  5  6  7
0 : -6
#[1]  0 -1 -2 -3 -4 -5 -6

:运算实际只支持interger型,输入double型将向下取整,其他则报错

r 复制代码
2.0 : 6.7
#[1] 2 3 4 5 6
"w" : "d"
#错误于"w":"d": NA/NaN参数
#此外: 警告信息:
#1: 强制改变过程中产生了NA 
#2: 强制改变过程中产生了NA 
  • 创建自定义内容向量-c()

注意,向量只能存储相同类型的数据

r 复制代码
c(20, "67")
#[1] "20" "67"

由于所有类型都基于向量存储,故也可以"用向量创建向量",例如:

咳咳咳,这么说其实不严谨,其实是"用长度大于1的向量创建向量"

r 复制代码
c(c(2, 0), 6 : 7)
#[1] 2 0 6 7
  • 创建空向量(会赋默认值)-vector()
参数 mode length
类型 character interger
含义 存储类型 向量长度
r 复制代码
vector(mode = "numeric", length = 2)
#[1] 0 0

2. 索引

使用[]进行索引

R语言的索引从1开始 (what a craze (꒪⌓꒪)),负数索引表示返回删除对应项的向量,例如:

r 复制代码
a <- c(2067)
a[1]   # 2
a[-1]  # 0 6 7

索引支持使用长度大于1的向量,但要求向量的功能一致,即符号一致,依然以a为例:

r 复制代码
a[c(1, 3)]   # 2 6
a[c(-1, -2)] # 6 7
a[c(1, -2)]  # Error

如此一来也可以连续地取值、删除:

r 复制代码
a[1 : 3]   # 2 0 6
a[-3 : -1] # 7

3. 常用函数

  • 获取向量长度-length(向量)
r 复制代码
wind <- c(2, 0, 6, 7)
length(wind)
#[1] 4
  • 获取数据类型-class()、底层存储类型-typeod()、判断相等-identical()

同"单变量",因为"单变量"就是向量

  • 数值型向量求和-sum(numeric向量)
r 复制代码
sum(c(2:0, 6:7))
#[1] 16
  • 生成有序向量-seq()
参数 from to by length.out (len) along.with (along)
类型 numeric numeric numeric interger vector
含义 起点 终点 步长(不为0) 结果向量长度 参考向量

组合1:from + to + by,按步长间隔生成

r 复制代码
seq(from = 20, to = 6, by = -7)
#[1] 20 13  6

组合2:from + to + len,等分区间

r 复制代码
seq(from = 20, to = 6, len = 7)
#[1] 20.000000 17.666667 15.333333 13.000000 10.666667  8.333333  6.000000

组合3:from + to + along,等分区间,长度与参考向量相同

r 复制代码
seq(from = 2, to = 0, along = 6:7)
#[1] 2 0
  • 生成重复序列-rep(向量, 参数)
参数 times each length (len)
类型 interger interger interger
含义 整体重复次数 单体重复次数 向量长度

组合1:向量 + times( + len),整体重复times次,除非长度提前达到len

r 复制代码
rep(2:0, times = 2)
#[1] 2 1 0 2 1 0
rep(2:0, times = 2, len = 4)
#[1] 2 1 0 2

组合2:向量 + each( + len),整体重复times次,除非长度提前达到len

r 复制代码
rep(6:7, each = 2)
#[1] 6 6 7 7
rep(6:7, each = 2, length = 3)
#[1] 6 6 7
相关推荐
梦想的初衷~4 小时前
基于R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析
随机森林·机器学习·r语言
AAIshangyanxiu5 小时前
基于R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析
开发语言·机器学习·r语言·生态遥感·空间预测
青铜弟弟5 小时前
R语言与python升级包的问题
开发语言·python·r语言
wind_20675 小时前
一、工作环境构建
r语言·r语言-4.2.1
询问QQ:48773927820 小时前
在Matlab中用离散卡尔曼滤波器消除传感器噪声
r语言-4.2.1
垦***耪1 天前
探索西门子S7 - 200PLC和MCGS6.2组态的楼宇温度与空调运行控制系统
r语言-4.2.1
梦子yumeko1 天前
Spring Ai Alibaba-1.1.0.0-RC1-LlmRoutingAgent
人工智能·spring·r语言
wirepuller_king1 天前
数据统计分析及R语言编程-支付宝/微信消费账单数据分析
开发语言·数据分析·r语言
diegoXie2 天前
Python / R 向量顺序分割与跨步分割
开发语言·python·r语言