R语言数据类型与相应运算的实现
目录
- 一、常量与变量
- 1.常量
- 2.变量
- 二、数据类型
- 三、数值型向量
- 3.1 c()函数
- 3.2 length(x)
- 3.3 numeric()
- 四、向量运算
- 1.标量和标量运算
- 2.向量与标量运算
- 3.等长向量运算
- 4.不等长向量的运算
- 五、向量函数
- 1.向量化的函数
- 2.排序函数
- 3.统计函数
- 4.生成规则序列的函数
- 六、 复数向量
- 练习
一、常量与变量
1.常量
R 语言基本的数据类型有数值型,逻辑型(TRUE, FALSE),文本(字符串)。 支持缺失值,有专门的复数类型。
常量是指直接写在程序中的值。
数值型常量包括整型、单精度、双精度等,一般不需要区分。写法如 123, 123.45, -123.45,-0.012, 1.23E2, -1.2E-2 等。为了表示 123 是整型,可以写成 123L。
字符型常量用两个双撇号或两个单撇号包围,如"Li Ming" 或'Li Ming'。字符型支持中文,如"李明" 或'李明'。国内的中文编码主要有 GBK 编码和 UTF-8 编码,有时会遇到编码错误造成乱码的题,MS Windows 下 R 程序 一般用 GBK 编码,但是 RStudio 软件采用 UTF-8 编码。在 R 软件内字符串一般用 UTF-8 编码保存。
逻辑型常量只有 TRUE 和 FALSE。
缺失值用 NA 表示。统计计算中经常会遇到缺失值,表示记录丢失、因为错误而不能用、节假日没有数据等。除了数值型,逻辑型和字符型也可以有缺失值,而且字符型的空白值不会自动辨识为缺失值,需要自己规定。R 支持特殊的 Inf 值,这是实数型值,表示正无穷大,不算缺失值。
复数常量写法如 2.2 + 3.5i, 1i 等。
2.变量
程序语言中的变量用来保存输入的值或者计算得到的值。在 R 中,变量可以保存所有的数据类型,比如标量、向量、矩阵、数据框、函数等。
变量都有变量名,R 变量名必须以字母、数字、下划线和句点组成,变量名的第一个字符不能取为数字。在中文环境下,汉字也可以作为变量名的合法字符使用。变量名是区分大小写的,y 和 Y 是两个不同的变量名。
变量名举例: x, x1, X, cancer.tab, clean_data, diseaseData。
用 <-赋值的方法定义变量。<-也可以写成 =,但是 <-更直观。如
x5 <- 6.25x6 = sqrt(x5)
二、数据类型 R 语言基本的数据类型有数值,逻辑型(TRUE, FALSE),文本(字符串)。支持缺失值,有专门的复数类型。
R 语言数据结构包括向量,矩阵和数据框,多维数组,列表,对象等。数据中元素、行、列还可以用名字访问。最基本的是向量类型。向量类型数据的访问方式也是其他数据类型访问方式的基础。
三、数值型向量 向量是将若干个基础类型相同的值存储在一起,各个元素可以按序号访问。如 果将若干个数值存储在一起可以用序号访问,就叫做一个数值型向量。
3.1 c() 函数
用 c() 函数把多个元素或向量组合成一个向量。如:
marks <- c(10, 6, 4, 7, 8)marks
返回:
文章图片
再如:
x <- c(1:3, 10:13)x
返回:
文章图片
再如:
x1 <- c(1, 2)x2 <- c(3, 4)x <- c(x1, x2)x
返回:
文章图片
3.2 length(x)
length(x) 可以求 x 的长度
x <- c(1:3, 10:13)length(x)
返回:
文章图片
3.3 numeric()
numeric() 函数可以用来初始化一个指定元素个数而元素都等于零的数值型向量,如 numeric(10) 会生成元素为 10 个零的向量,长度为零的向量表示为 numeric(0)。
numeric(10)
返回:
文章图片
四、向量运算
1.标量和标量运算
单个数值称为标量,R 没有单独的标量类型,标量实际是长度为 1 的向量。 R 中四则运算用 + - * / ? 表示 (加、减、乘、除、乘方),如
1.5 + 2.3 - 0.6 + 2.1*1.2 - 1.5/0.5 + 2^3## [1] 10.72
返回:
文章图片
R 中四则运算仍遵从通常的优先级规则,可以用圆括号 () 改变运算的先后次序。如
1.5 + 2.3 - (0.6 + 2.1)*1.2 - 1.5/0.5 + 2^3## [1] 5.56
除了加、减、乘、除、乘方,R 还支持整除运算和求余运算。用%/% 表示整除, 用%% 表示求余。如
5 %/% 3## [1] 15 %% 3## [1] 2
返回:
文章图片
2.向量与标量运算
向量与标量的运算为每个元素与标量的运算, 如
x <- c(1, 10) x + 2## [1] 3 12x - 2## [1] -1 8x * 2## [1] 2 20x / 2## [1] 0.5 5.0x ^ 2## [1] 1 1002 / x## [1] 2.0 0.22 ^ x## [1] 2 1024x %% 2##[1] 1 0x %/% 2##[1] 0 5
返回:
文章图片
一个向量乘以一个标量,就是线性代数中的数乘运算。 四则运算时如果有缺失值,缺失元素参加的运算相应结果元素仍缺失。如
c(1, NA, 3) + 10
返回:
文章图片
3.等长向量运算
等长向量的运算为对应元素两两运算。如
x1 <- c(1, 10)x2 <- c(4, 2)x1 + x2
返回:
文章图片
同样也可以进行减,乘,除;如
x1 - x2## [1] -3 8x1 * x2## [1] 4 20x1 / x2## [1] 0.25 5.00
4.不等长向量的运算
两个不等长向量的四则运算,如果其长度为倍数关系,规则是每次从头重复利用短的一个。如:
x1 <- c(10, 20)x2 <- c(1, 3, 5, 7)x1 + x2
返回:
文章图片
不仅是四则运算,R 中有两个或多个向量按照元素一一对应参与某种运算或函数调用时,如果向量长度不同,一般都采用这样的规则。如果两个向量的长度不是倍数关系,会给出警告信息。如
c(1,2) + c(1,2,3)
返回:
文章图片
五、向量函数
1.向量化的函数
R 中的函数一般都是向量化的: 在 R 中,如果普通的一元函数以向量为自变量,一般会对每个元素计算。这样的函数包括 sqrt, log10, log, exp, sin, cos, tan 等许多。如
sqrt(c(1, 4, 6.25))
返回:
文章图片
为了查看这些基础的数学函数的列表,运行命令 help.start(),点击链接 “Search Engine and Keywords”,找到 “Mathematics” 栏目,浏览其中的 “arith” 和 “math” 链接中的说明。
常用的数学函数有:常用的数学函数有:
? 舍入:ceiling, floor, round, signif, trunc, zapsmall
? 符号函数 sign
? 绝对值 abs
? 平方根 sqrt
? 对数与指数函数 log, exp, log10, log2
? 三角函数 sin, cos, tan
? 反三角函数 asin, acos, atan, atan2
? 双曲函数 sinh, cosh, tanh
? 反双曲函数 asinh, acosh, atanh
有一些不太常用的数学函数:如果自己编写的函数没有考虑向量化问题,可以用 Vectorize() 函数将其转换成向量化版本。
? 贝塔函数 beta, lbeta
? 伽 玛 函 数 gamma, lgamma, digamma, trigamma, tetragamma, pentagamma
? 组合数 choose, lchoose
? 富利叶变换和卷积 fft, mvfft, convolve
? 正交多项式 poly
? 求根 polyroot, uniroot
? 最优化 optimize, optim
? Bessel 函数 besselI, besselK, besselJ, besselY
? 样条插值 spline, splinefun
? 简单的微分 deriv
2.排序函数
sort(x) 返回排序结果。rev(x) 返回把各元素排列次序反转后的结果。order(x) 返回排序用的下标。如
x <- c(33, 55, 11)sort(x)## [1] 11 33 55rev(sort(x))## [1] 55 33 11order(x)## [1] 3 1 2x[order(x)]## [1] 11 33 55
返回:
文章图片
order(x)结果中 3 是 x 的最小元素 11 所在的位置下标,1 是 x 的 第二小元素 33 所在的位置下标,2 是 x 的最大元素 55 所在的位置下标。
3.统计函数
sum(求和), mean(求平均值), var(求样本方差), sd(求样本标准差), min(求最小值), max(求最大值), range(求最小值和最大值) 等函数称为统计函数,把输入向量看作样本,计算样本统计量。prod 求所有元素的乘积。
cumsum 和 cumprod 计算累加和累乘积。如
cumsum(1:5)
返回:
文章图片
cumprod(1:5)
返回:
文章图片
其它一些类似函数有 pmax, pmin, cummax, cummin 等。
4.生成规则序列的函数
seq 函数是冒号运算符的推广。比如
seq(5)seq(2,5)seq(11, 15, by=2)#产生从 0 到 2π 的等间隔序列,序列长度指定为 100seq(0, 2*pi, length.out=100)
返回:
文章图片
在使用变量名时次序可以颠倒,比如
seq(to=5, from=2)
返回:
文章图片
rep() 函数用来产生重复数值。
为了产生一个初值为零的长度为 n 的向量,用 x <- rep(0, n) 。
rep(c(1,3), 2)
返回:
文章图片
再比如:
rep(c(1,3), c(2,4))
把第一自变量的第一个元素 1 按照第二自变量中第一个元素 2 的次数重复,把第一自变量 中第二个元素 3 按照第二自变量中第二个元素 4 的次数重复,返回:
文章图片
如 果 希 望 重 复 完 一 个 元 素 后 再 重 复 另 一 元 素, 用 each= 选 项, 比 如
rep(c(1,3), each=2)
返回:
文章图片
六、 复数向量 复数常数表示如 3.5+2.4i, 1i。用函数 complex() 生成复数向量,指定实部和虚部。如
complex(c(1,0,-1,0), c(0,1,0,-1))
返回:
文章图片
在 complex() 中可以用 mod 和 arg 指定模和辐角,如
complex(mod=1,arg=(0:3)/2*pi)
返回:
文章图片
用 Re(z) 求 z 的实部,用 Im(z) 求 z 的虚部,用 Mod(z) 或 abs(z) 求 z 的模,用 Arg(z) 求 z 的辐角,用 Conj(z) 求 z 的共轭。sqrt, log, exp, sin 等函数对复数也有定义,但是函数定义域在自变量为实数时可能有限制而复数无限制,这时需要区分自变量类型。如
sqrt(-1)sqrt(-1 + 0i)
返回:
文章图片
练习 1. 显示 1 到 100 的整数的平方根和立方根(提示:立方根就是三分之一次 方)。
2. 设有 10 个人的小测验成绩为:
77 60 91 73 85 82 35 100 66 75
(1) 把这 10 个成绩存入变量 x;
(2) 从小到大排序;
(3) 计算 order(x),解释 order(x) 结果中第 3 项代表的意义。
(4) 计算这些成绩的平均值、标准差、最小值、最大值、中位数。
3. 生成 [0, 1] 区间上等间隔的 100 个格子点存入变量 x 中。
【R语言数据类型与相应运算的实现】到此这篇关于R语言数据类型与相应运算的实现的文章就介绍到这了,更多相关R语言数据类型与相应运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 解决WCF不能直接序列化SqlParameter类型的问题
- JavaScript|JavaScript 数据处理 - 映射表篇
- 算法和数据结构|字节跳动 2021 春招面试高频题3
- 利用go实现mysql批量测试数据生成-TDG
- 生成式预训练语言模型能否视作闭卷问答的知识库()
- 简单学习一下ibd数据文件解析
- pyecharts实现数据可视化
- python数据分析apply()|python数据分析apply(),map(),applymap()用法
- 使用python连接mysql数据库数据方式
- Python:将ndarray数据传递给C++