R-3_向量、多维数组和矩阵

更新时间:2023-06-08 15:13:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

R-3_向量、多维数组和矩阵

第三讲 R的数据结构(一) 向量、多维数组和矩阵 目的: 学习R中向量、多维数组和矩阵的表示方法 内容: 1. 数据表示 2. 实例 3. 作业

R-3_向量、多维数组和矩阵

R是基于对象的语言 基本的数据类型,有向量、矩阵、列表等 复杂的数据对象,有数据框对象,时间序列对象, 模型对象,图形对象,等等

R表达式可以使用常量和变量 变量名: 由字母、数字、句点组成,第一个字符必须是字母,长度没有限制,但区分大小写 特别要注意句点可以作为名字的合法部分

R-3_向量、多维数组和矩阵

常量 常量为逻辑型、数值型和字符型三种 实际上数值型数据又可以分为整型、单精度、 双精 度等 例如,123,123.45,1.2345e30 是数值型常量, “Weight”,“李明”是字符型 逻辑真值写为T或TRUE(注意区分大小写,写t或true 都没意义),逻辑假值写为F或FALSE 复数常量就用3.5-2.1i这样的写法表示

R的数据可以取缺失值,用符号NA代表缺失值 函数is.na(x)返回x是否缺失值(返回值T或F)

R-3_向量、多维数组和矩阵

向量(Vector)与赋值向量: 有相同基本类型的元素序列,一维数组 向量是R中最为基本的类型 一个向量中元素的类型必须相同,包括 数值型 整型 单精度实型 双精度实型

逻辑型 复值型 字符型

R-3_向量、多维数组和矩阵

向量赋值 定义向量的最常用办法是使用函数c() 它把若干个数值或字符串组合为一个向量, 比如: > x <- c(1:3, 10:13) >x [1] 1 2 3 10 11 12 13 R中用符号“<-”、 “=”来为变量赋值 另一种赋值的办法是用assign函数 比如> x1<- c(1, 2) 和 > assign(“x1”, c(1, 2))相同 函数length(x)可以计算向量x的长度

R-3_向量、多维数组和矩阵

向量运算 可以对向量进行加(+)减(-)乘(*)除(/)、乘方(^)运算,其含意是对向量的每一个元素进 行运算。 例如: > x <- c(1, 4, 6.25) > y <- x*2+1 >y [1] 3.0 9.0 13.5

另外,%/%表示整数除法(比如5 %/% 3为1),%%表示求余数(如5 %% 3为2)

R-3_向量、多维数组和矩阵

可以用向量作为函数自变量 sqrt、log、exp、sin、cos、tan等函数都可以用向 量作自变量,结果是对向量的每一个元素取相 应的函数值 函数min和max分别取向量自变量的最小值和最 大值 函数sum计算向量自变量的元素和 函数mean计算均值 函数var计算样本方差(分母为n-1) 函数sd计算标准差(在Splus中用sqrt(var())计算) 如果求var(x)而x是矩阵,则结果为样本协方差 阵。 (x中一个行向量为一次观测值)

R-3_向量、多维数组和矩阵

sort(x)返回x的元素从小到大排序的结果向量 order(x)返回使得x从小到大排列的元素下标向量, 即x从小到大排列后各元素在原来序列中的位置 (x[order(x)]等效于sort(x))。 >x<-c(2,4,8,6,10) >order(x) [1] 1 2 4 3 5 > x[order(x)] [1] 2 4 6 8 10 rank(x)

返回x的秩 [1] 1 2 4 3 5

任何数与缺失值的运算结果仍为缺失值 例如,> 2*c(1, NA, 2) [1] 2 NA 4 > sum(c(1, NA, 2)) [1] NA

R-3_向量、多维数组和矩阵

向量运算中的循环法则(recycling rule) 1 1 1 2 1 2 2 2 4 2 3 1 3 4 4 2 4 6 1 1 1 2 2 2 2 4 1 2 3 3 3 6 4 4 4 8 3 5 1 5 6 4 6 2 6 8 7 3 7 10

>1:2+1:4

>1:4+1:7

R-3_向量、多维数组和矩阵

产生有规律的数列 在R中很容易产生一个等差数列例如,1:n产生从1到n的整数列, -2:3产生从-2到3 的整数列, 5:2产生反向的数列: 注意:1:n-1不是代表1到n-1而是向量1:n减去1, > n<-5 > 1:n-1 [1] 0 1 2 3 4 > 1:(n-1) [1] 1 2 3 4

R-3_向量、多维数组和矩阵

seq函数是更一般的等差数列函数如只指定一个自变量n>0,则seq(n)相当于1:n 。指定 两个自变量时,第一量是开始值,第二量是结束值, 如seq(-2,3)是从-2到3 。

R函数调用的一个很好的特点是它可以使用不同个数的自变量,函数可以对不同类型的自变量给出不 同结果,自变量可以用“自变量名=自变量值”的 形式指定。例如,seq(-2,3)可以写成seq(from=-2, to=3)。可以用一个by参数指定等差数列的增加值, 例如:[1] 0.0 0.7 1.4 也可以写成seq(from=0, to=2, by=0.7)。

> seq(0, 2, 0.7)

R-3_向量、多维数组和矩阵

有参数名的参数的次序任意,如:> seq(0, by=0.7, to=2) [1] 0.0 0.7 1.4 可以用length参数指定数列长度 如seq(from=10, length=5)产生10到14。 seq函数还可以用一种seq(along=向量名)的格式, 这时只能用这一个参数,产生该向量的下标序列, 如:

>x [1] 1.00 4.00 6.25 > seq(along=x) [1] 1 2 3

R-3_向量、多维数组和矩阵

另一个类似的函数是rep,它可以重复第一个 自变量若干次,例如: > rep(x,3) [1] 1.00 4.00 6.25 1.00 4.00 6.25 1.00 4.00 6.25 第一个参数名为x,第二个参数名为times (重 复次数)。x<-1:3 rep(x,1:3) [1] 1 2 2 3 3 3

R-3_向量、多维数组和矩阵

逻辑向量 向量可以取逻辑值,如: > l <- c(T, T, F) > l输出[1] TRUE TRUE FALSE 当然,逻辑向量是一个比较的结果,如: > x 输出 [1] 1.00 4.00 6.25 > l <- x > 3 > l 输出 [1] FALSE TRUE TRUE 一个向量与常量比较大小,结果还是一个向量,元 素为每一对比较的结果逻辑值 两个向量也可以比较,如: > log(10*x) [1] 2.302585 3.688879 4.135167 > log(10*x)> x 输出[1] TRUE FALSE FALSE 比较运算符包括 <,<=,>,>=,==,!=

R-3_向量、多维数组和矩阵

逻辑向量

两个逻辑向量可以进行与(&)、或(|)运算,结 果是对应元素运算的结果。对逻辑向量x计算!x表 示取每个元素的非。 例如:> x <- c(1,4,6.25,1.6) > (x > 1.5) & (x<3) [1] FALSE FALSE FALSE TRUE 判断一个逻辑向量是否都为真值的函数是all,如: > all(log(10*x) > x) [1] FALSE 判断是否其中有真值的函数是any,如: > any(log(10*x) > x) [1] TRUE

R-3_向量、多维数组和矩阵

逻辑向量 函数is.na(x)用来判断x的每一个元素是否缺失如 > is.na(c(1, NA, 3)) [1] FALSE TRUE FALSE 逻辑值可以强制转换为整数值,TRUE变成1, FALSE变成0 例如,age>65为老年人,否则为年轻人, 可以用c(“young”, “old”)[(age>65)+1] 表示。 当年龄大于65时age>65等于TRUE,加1则把TRUE 转换为数值型的1,结果得2,于是返回第二个下标 处的“old”。否则等于0+1下标处的“young”。 >age <- c(89,20,10,66); c('young','old')[(age>65)+1] [1] "old" "young" "young" "old"

R-3_向量、多维数组和矩阵

字符型向量 向量元素可以取字符串值。例如: > c1 <- c("x", "sin(x)") > c1 输出 [1] "x" "sin(x)" > ns <- c("Weight", "Height", "年龄") > ns 输出[1] "Weight" "Height" "年龄" paste函数用来把它的自变量连成一个字符串,中 间用空格分开,例如: > paste("My", "Job") [1] "My Job" > paste('Hi','早') 输出[1] "Hi 早" 连接的自变量可以是向量,这时各对应元素连接 起来,长度不相同时较短的向量被重复使用。自 变量可以是数值向量,连接时自动转换成适当的 字符串表示,例如:

R-3_向量、多维数组和矩阵

例如: > paste(c("X", "Y"), "=", 1:4) [1] "X = 1" "Y = 2" "X = 3" "Y = 4" 分隔用的字符可以用sep参数指定,例如: > paste('result.', 1:5, sep= " ") [1] "result.1" "result.2" "result.3" "result.4" "result.5" 如果给paste()函数指定了collapse参数, 则把字符串向量的各个元素连接成一个字符 串, 中间用collapse指定的值分隔。比如 >paste(c('a', 'b'), collapse='.') 得到'a.b'。

R-3_向量、多维数组和矩阵

复数向量 R支持复数运算 复数常量只要用3.5+2.1i这样的格式即可 复向量的每一个元素都是复数

可以用complex()函数生成复向量(见帮助) Re()计算实部 Im()计算虚部 Mod() 计算复数模 Arg()计算复数幅角

> ?complex

R-3_向量、多维数组和矩阵

complex package:base R Documentation Complex Vectors Description: Basic functions which support complex arithmetic in R. Usage: complex(length.out = 0, real = numeric(), imaginary = numeric(), modulus = 1, argument = 0) plex(x, ...) plex(x) Re(x) Im(x) Mod(x) Arg(x) Conj(x) Arguments: length.out: numeric. Desired length of the output vector, inputs being recycled as needed. real: numeric vector. imaginary: numeric vector . modulus: numeric vector.

R-3_向量、多维数组和矩阵

argument: numeric vector. x: an object, probably of mode 'complex'. ...: further arguments passed to or from other methods. Details: Complex vectors can be created with 'complex'

. The vector can be specified either by giving its length, its real and imaginary parts, or modulus and argument. (Giving just the length generates a vector of complex zeroes.) 'plex' attempts to coerce its argument to be of complex type: like 'as.vector' it strips attributes including names. Note that 'plex' and 'is.numeric' are never both 'TRUE'. The functions 'Re', 'Im', 'Mod', 'Arg' and 'Conj' have their usual interpretation as returning the real part, imaginary part,

本文来源:https://www.bwwdw.com/article/1ef1.html

Top