二、数据类型

一、单变量

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

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-Z,a-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
相关推荐
天桥下的卖艺者1 天前
chrals.CTI函数升级版发布,增加了CTI衍生的脂肪指数提取
数据库·r语言
小师兄吃牛肉2 天前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言
喆星时瑜3 天前
Win10/11 安装 R 与 RStudio 详细图文教程
开发语言·r语言·安装
喆星时瑜3 天前
R语言基础语法入门
开发语言·r语言
喆星时瑜3 天前
R语言向量语法的详细教程
开发语言·r语言
临床数据科学和人工智能兴趣组5 天前
在R语言中, 使用 as.factor() 函数转换数值型变量
开发语言·r语言
babe小鑫15 天前
信息与计算科学专业应届生面试 怎么证明自己能解决业务问题
学习·r语言·excel
深兰科技16 天前
深兰科技受邀参与第二届中国(南宁)—东盟人工智能场景应用对接会,深化AI国际合作
人工智能·qt·r语言·scala·symfony·智能机器人·深兰科技
赵钰老师17 天前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言
User_芊芊君子21 天前
RStudio 鸿蒙 PC 适配全记录:以 Qt 原生工作区承载嵌入式 R
qt·r语言·harmonyos