- 实验目的:
- 掌握向量的几种类型:数值向量、逻辑向量、字符向量、复数向量;
- 掌握生成向量几个的函数使用和向量的下标运算;
- 掌握因子的定义和相关函数的使用。
- 实验内容:
- R语言中,数值向量用得非常多。生成数值向量的函数有:
- c(),生成任意数据构成的向量
- :,生成公差为+1或-1的等差数列构成的向量
- seq(),生成任意公差的等差数据构成的向量
- rep(),生成重复数据构成的向量
利用上述函数完成以下小题,并将代码和运行结果截图粘贴于每小题之下的空行。
生成一个向量,其元素是-π到π之间、公差为π/10的等差数列。
- 实验内容:
- R语言中,数值向量用得非常多。生成数值向量的函数有:
- c(),生成任意数据构成的向量
- :,生成公差为+1或-1的等差数列构成的向量
- seq(),生成任意公差的等差数据构成的向量
- rep(),生成重复数据构成的向量
生成一个向量,其元素是10,20之间的10个等差数据数列。
生成一个向量,其元素是10,20之间的等差数列,元素个数与由5:17生成的向量的个数相同。
生成一个向量,其元素是由1~10,1~10这20个整数组成。
生成一个向量,其元素是由1~10中的每个数重复3次组成。
建立一个R文件,在文件中输入变量x = (1,2,3)T, y = (4,5,6)T,计算z = 2x + y + e,其中 e = (1,1,1)T。
构造一个向量x,向量是由5个1,3个2,4个3和2个4构成,注意用到 rep()函数。
逻辑向量:由TRUE(T)或FALSE(F)组成的向量称为逻辑向量,如z <- c(T, F, F, F)。对数值向量做逻辑运算(如:<, <=, >, >=, ==(等于), !=(不等于)),可以构造逻辑向量。
已知 x <- 1:5,完成以下练习,并在R中运行进行验证。
若y <- x > 3,则逻辑向量y等于什么?
all(x>3)的结果是?
any(x>3)的结果是?
which(x>3)的结果是?
字符向量:由字符组成的向量称为字符向量,如z <- c("Tim", "Tom", "John", "Fan")。R语言中与字符向量有关的函数是paste(),它可以把多个向量对应的元素默认用一个空格连接起来,向量长度不同时,较短的向量会被重复使用。当其中有向量为数值向量时,连接时会自动转换成适当的字符串。另一个相似的函数是paste0(),此函数是把多个向量对应的元素直接连接起来。
完成以下练习,并在R中运行进行验证。
paste("Today is", date())的结果是?
labs<-paste("X", 1:6, sep = ""),参数sep表示连接多个向量中各对应数据所用的分隔字符,缺省为空格,则labs等于?
对比:labs1<-paste("X", 1:6),则labs1等于?
paste0("X", 1:6)的结果是?
paste(c("X","Y"), 1:8, sep="_")的结果是?
paste0(c("X","Y"), 1:8)的结果是?
数值向量的下标运算。在R语言中,向量的下标从1开始。数值向量的下标可以是:
正整数
负整数
向量(元素是正整数)
向量(元素是负整数)
逻辑向量
字符
已知v <- 10:20,完成以下练习,并在R中运行进行验证。
v[10]
v[c(1,3,5,9)]
v[1:5]
v[-1]
v[-(1:5)]
v[v>15]
在定义向量时可以给元素加上名字,如ages <- c(Li=33, Zhang=29, Liu=18),此时ages["Liu"]的结果为?ages[3]的结果为?
影响试验指标的原因或原因组合,称为因素或因子(factor),这些因子通常是名义变量或者有序变量,常用大写字母A、B、C等表示。每个试验因素的不同状态,称为因子水平,简称为水平(level)。在R语言中,生成因子的函数有两个:
factor():将一个向量转换成因子
gl():生成有规律的因子,在方差分析中经常会用到
完成以下练习,并在R中运行进行验证。
已知5位学生的性别,先利用c()函数生成字符向量,然后利用factor()函数生成因子变量。
sex <- c("M","F","M","M","F")
(sexf <- factor(sex)) #体会向量sex与因子sexf的区别
factor(1:3, levels=1:5) #水平数可以比向量元素个数多
factor(1:3 ,labels=c("A","B","C"))
gl(3,5) # 3是因子水平数, 5是每个水平数的重复次数
gl(3, 5, labels=paste0("A", 1:3))
gl(5,1,15) # 15是结果的总长度
gl(5,1,15, labels=paste0("B",1:5))
思考:(以下运算类型的题目请先进行笔算后,再在R中运算核对)
在R语言中,向量分为_________、__________、__________和复数向量。
数值向量,字符向量,逻辑向量
已知 n<- 5,则1:n-1与1:(n-1)的结果分别是什么?
rep(1:10, length.out=12),这段代码会出错吗?如果不会,结果是什么?
c(1,4)*c(2,3)的输出结果是什么?
因子与普通向量有什么区别?在R语言中定义一个因子有哪两个函数?
在R语言中,因子(factor)与普通向量(vector)有以下区别:
数据类型不同:因子是一种特殊的数据类型,而普通向量可以是任意数据类型,例如数值型、字符型、逻辑型等。
存储方式不同:因子是使用整数表示每个不同的水平(level),而普通向量直接存储数据本身。
有限的取值范围:因子的取值范围是有限的,即只能从事先定义好的水平中选择,而普通向量可以取任意值。
在R语言中,定义一个因子可以使用以下两个函数:
factor()函数和gl()函数
vec<- c(2,4,6,8,10); vec[2]; vec[-2]的输出结果是什么?
测量得到了5位男士的体重和身高的数据如下:
体重(kg):60, 75, 65, 68, 70
身高(cm):170, 180, 165, 172, 178
分别存储在向量weight和height中。若想得到那些身高超过170cm的男士的体重数据,请写出相应的R代码。
weight[height > 170]