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.25
x6 = 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] 1
5 %% 3
## [1] 2

返回:

2.向量与标量运算

向量与标量的运算为每个元素与标量的运算, 如

x <- c(1, 10) x + 2
## [1] 3 12
x - 2
## [1] -1 8
x * 2
## [1] 2 20
x / 2
## [1] 0.5 5.0
x ^ 2
## [1] 1 100
2 / x
## [1] 2.0 0.2
2 ^ x
## [1] 2 1024
x %% 2
##[1] 1 0
x %/% 2
##[1] 0 5

返回:

一个向量乘以一个标量,就是线性代数中的数乘运算。 四则运算时如果有缺失值,缺失元素参加的运算相应结果元素仍缺失。如

c(1, NA, 3) + 10

返回:

3.等长向量运算

等长向量的运算为对应元素两两运算。如

x1 <- c(1, 10)
x2 <- c(4, 2)
x1 + x2

返回:

同样也可以进行减,乘,除;如

x1 - x2
## [1] -3 8
x1 * x2
## [1] 4 20
x1 / 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

有一些不太常用的数学函数
• 贝塔函数 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

如果自己编写的函数没有考虑向量化问题,可以用 Vectorize() 函数将其转换成向量化版本。

2.排序函数

sort(x) 返回排序结果。rev(x) 返回把各元素排列次序反转后的结果。order(x) 返回排序用的下标。如

x <- c(33, 55, 11)
sort(x)
## [1] 11 33 55
rev(sort(x))
## [1] 55 33 11
order(x)
## [1] 3 1 2
x[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 求所有元素的乘积。

cumsumcumprod 计算累加和累乘积。如

cumsum(1:5)

返回:

cumprod(1:5)

返回:

其它一些类似函数有 pmax, pmin, cummax, cummin 等。

4.生成规则序列的函数

seq 函数是冒号运算符的推广。比如

seq(5)
seq(2,5)
seq(11, 15, by=2)
#产生从 0 到 2π 的等间隔序列,序列长度指定为 100
seq(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() 中可以用 modarg 指定模和辐角,如

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语言数据类型与相应运算内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言数据类型知识点总结

    通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种数据类型的信息,如字符,宽字符,整数,浮点,双浮点,布尔等.基于变量的数据类型,操作系统分配内存并决定什么可以存储在保留内存中. 与其他编程语言(如 C 中的 C 和 java)相反,变量不会声明为某种数据类型. 变量分配有 R 对象,R 对象的数据类型变为变量的数据类型.尽管有很多类型的 R 对象,但经常使用的是

  • R语言数据类型和对象深入讲解

    以上数据类型均为原子向量. 单引号和双引号不做区分. R语言中TRUE和FALSE 可以简化为T和F 多元素向量的生成方式 方式 1:使用c()函数 ,这个是最常见的 c(combine) 如果基本类型混合的话,会强制类型转换 方式2: 使用seq()函数 (创建等差数列) 方式3:创建等差序列 事先知道向量的类型和长度,可以 产生随机数列 有放回抽样 (这个可以用np.random.choice()实现) 取向量的元素,并对其操作 (下表从1开始) 根据变量的不同,R语言数据对象可以分为 到此

  • R语言数据类型深入详解

    R语言用来存储数据的对象包括: 向量, 因子, 数组, 矩阵, 数据框, 时间序列(ts)以及列表 意义介绍 1. 向量(一维数据): 只能存放同一类型的数据 语法: c(data1, data2, ...),访问的时候下标从1开始(和Matlab相同);向量里面只能存放相同类型的数据. > x <- c(1,5,8,9,1,2,5) > x [1] 1 5 8 9 1 2 5 > y <- c(1,"zhao") # 这里面有integer和字符串, 整

  • 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),文本(字符串). 支持缺失值,有专门的复数类型.   

  • R语言逻辑型运算的实现

    目录 一.逻辑型向量与比较运算 二.逻辑运算 三.逻辑运算函数 一.逻辑型向量与比较运算 逻辑型是 R 的基本数据类型之一,只有两个值 TRUE 和 FALSE, 缺失时为 NA. 逻辑值一般产生自比较,如 sele <- (log10(15) < 2); print(sele) 返回: 向量比较结果为逻辑型向量.如 c(1, 3, 5) > 2 返回: (1:4) >= (4:1) 返回: 与 NA 比较产生 NA,如 c(1, NA, 3) > 2 返回: NA == N

  • R语言中向量和矩阵简单运算的实现

    一.向量运算 向量是有相同基本类型的元素序列,一维数组,定义向量的最常用办法是使用函数c(),它把若干个数值或字符串组合为一个向量. 1.R语言向量的产生方法 > x <- c(1,2,3) > x [1] 1 2 3 2.向量加减乘除都是对其对应元素进行的,例如下面 > x <- c(1,2,3) > y <- x*2 > y [1] 2 4 6 (注:向量的整数除法是%/%,取余是%%.) 3.向量的内积,有两种方法. 第一种方法:%*% > x

  • R语言多线程运算操作(解决R循环慢的问题)

    已经大半年没有更新博客了..最近都跑去写分析报告半年没有R 这次记录下关于R循环(百万级以上)死慢死慢的问题,这个问题去年就碰到过,当时也尝试过多线程,but failed......昨天试了下,终于跑通了,而且过程还挺顺利 step1 先查下自己电脑几核的,n核貌似应该选跑n个线程,线程不是越多越好,线程个数和任务运行时间是条开口向下的抛物线,最高点预计在电脑的核数上. detectCores( )检查当前电脑可用核数 我的是4所以step2选的是4 library(parallel) cl.

  • R语言基本语法深入讲解

    基本数据类型 数据类型 向量 vector 矩阵 matrix 数组 array 数据框 data frame 因子 factor 列表 list 向量 单个数值(标量)没有单独的数据类型,它只不过是向量的一种特例 向量的元素必须属于某种模式(mode),可以整型(integer).数值型(numeric).字符型(character).逻辑型(logical).复数型(complex) 循环补齐(recycle):在一定情况下自动延长向量 筛选:提取向量子集 向量化:对向量的每一个元素应用函数

  • R语言的xtabs函数实例讲解

    今天在做一个列联表独立性检验的时候,总是无法处理好要求的数据类型,偶然的机会,看到了xtabs()函数,感觉很适合用来做列联表,适合将一列数据转换成列联表. shifou <- c("yes","yes","no","no") xinbie <- c("nan","nv","nan","nv") freq <- c(34,38,2

  • R语言 数据集行列互换的技巧分享

    现在给大家介绍的数据处理技巧是长转宽,也就相当于Excel中的转置,不过用R语言实现的长转宽还有数据合并的功能,自然比Excel强大多了. 这里给大家介绍4个函数,其中melt().dcast()来自reshape2包,gather().spread()来自tidyr包 一.宽转长--melt().gather() mydata<-data.frame( name=c("store1","store2","store3","sto

随机推荐