1、注:本机选用 d:/RBook/作为工作目录,可在 “文件-改变工作目录”中修改R 代码中“#”后边的都表示注释第二章 R 中的数据输入2.1 R 第一步基础:录入数据()一般代表着一个函数本章所有原始数据:Wing=c(59,55,53.5,55,52.5,57.5,53,55)Tarsus=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Wt=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7)2.1.2 使用 c 函数连接数据wing
2、=c(59,55,53.5,55,52.5,57.5,53,55) #用 C()函数可使一个变量中存储多个值wing1 59.0 55.0 53.5 55.0 52.5 57.5 53.0 55.0 #查看输出的所有结果wing31 53.5 #输出变量中的第三个数据wing1:41 59.0 55.0 53.5 55.0 #输出第一到第四个数据wing-21 59.0 53.5 55.0 52.5 57.5 53.0 55.0 #输出除了第二个数据外的所有数据wing1,2,3错误于 wing1, 2, 3 : 量度数目不对wing-(2:5)1 59.0 57.5 53.0 55.0 #输
3、出除了第二到第五个 外的所有数据wingc(1,3,5,7)1 59.0 53.5 52.5 53.0 #输出第 1、3 、5、7 个数据,注意这里不能不加只写 1357,否则会出错wingwing54&wing55) #获取向量中大于 55 的下标1 1 6Wingwhich(Wing55) #再获取向量中大于 55 的下标后显示其值1 59.0 57.52.1.4*使用 vector 函数结合数据(可用以代替 c 函数)生成一个长度为 8,包含所有 8 只鸟的 wingcrd 数据的一个向量:W=vector(length=8)W 1=59W 2=55W 3=53.5W 4=55W 5=5
4、2.5W 6=57.5W 7=53W 8=55 W1 59.0 55.0 53.5 55.0 52.5 57.5 53.0 55.0 W1:41 59.0 55.0 53.5 55.0Wc(1,3,5)1 59.0 53.5 52.5 #访问 W 中一些特定的元素2.1.5*使用矩阵(matrix)结合数据Dmat=matrix(nrow=2,ncol=3) #第一步必需事先定义好矩阵的大小!生成的顺序是生成完第一列后再生成第二列Dmat,1 ,2 ,31, NA NA NA2, NA NA NADmat=matrix(nrow=8,ncol=4) #生成一个 8 行 4 列的矩阵Dmat,1
5、=c(59,55,53.5,55,52.5,57.5,53,55) #为矩阵中的列赋值Dmat,2=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Dmat,3=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Dmat,4=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7) #如果在录入的过程中录多或录少数据会报错:被替换的项目不是替换值长度的倍数colnames(Dmat)=c(“Wingcrd“,“Tarsus“,“Head“,“Wt“) # Dmat 本身没有列标签,用 colnames
6、函数给 Dmat 的列加上名称Dmat # 输出带有标签的矩阵 DmatWingcrd Tarsus Head Wt1, 59.0 22.3 31.2 9.52, 55.0 19.7 30.4 13.83, 53.5 20.8 30.6 14.84, 55.0 20.3 30.3 15.25, 52.5 20.8 30.3 15.56, 57.5 21.5 30.8 15.67, 53.0 20.6 32.5 15.68, 55.0 21.5 NA 15.7#在这种情况下, Dmat 的值是以列的形式输入的,同样,也能以行的形式输入:Dmat1,=c(59,22.3,31.2,9.5)Dmat
7、2,=c(55,19.7,30.4,13.8)Dmat3,=c(53.5,20.8,30.6,14.8).#结果与之前以列的形式输入的一致矩阵的运算:转置函数 t()a=matrix(1:6,nrow=2,ncol=3)a ,1 ,2 ,31, 1 2 32, 4 5 6t(a),1 ,21, 1 42, 2 53, 3 6a=b=matrix(1:6,nrow=2,ncol=3) #设定两个矩阵 a 和 ba+b ,1 ,2 ,31, 2 6 102, 4 8 12 #两个矩阵相加就是对应元素的相加a*b,1 ,2 ,31, 1 9 252, 4 16 36 #同理,*只能是对两个矩阵中的对
8、应元素相乘而实际上,两矩阵的相乘并非对应元素的简单相乘a=matrix(1:6,nrow=2,ncol=3)b=matrix(1:6,nrow=3,ncol=2)a%*%b,1 ,21, 22 492, 28 64使用 solve(a,b)函数解线性方程组 ax=b,a 是矩阵,b 是 1 到 4 的向量a=matrix(rnorm(16),4,4) # rnorm(16)是按照正态分布生成 16 个随机数a,1 ,2 ,3 ,41, -1.4354706 -2.6136468 0.1203700 -0.1071282 (-1.4354706)*x1+(-2.6136468)*x2 +0.12
9、03700*x3+(-0.1071282)*x42, -2.3366871 -1.6241011 1.3914248 -0.70836703, -0.4246233 -0.2239177 -1.3318359 0.60110724, 1.4383145 0.3537002 -0.4863774 0.6333747b=c(1:4)b1 1 2 3 4solve(a,b) #逆矩阵1 -2.8610758 0.7731663 6.3016333 17.21986962.1.6 使用 data.frame(数据框)函数结合数据都是二维的表单,区别在于矩阵中的全部的元素都是数值型的(数组也是如此) ,
10、而数据框就不一定了,有可能这一列是数值型的数据,另一列就是字符型的数据,每一列都可以是不同的数值。用数据框结合具有相同长度的变量,数据框的每一行就包含同一样本的不同观察值Wing=c(59,55,53.5,55,52.5,57.5,53,55)Tarsus=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Wt=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7)Dfrm=data.frame(Wing,Tarsus,Head,Wt)Dfrm
11、Wing Tarsus Head Wt1 59.0 22.3 31.2 9.52 55.0 19.7 30.4 13.83 53.5 20.8 30.6 14.84 55.0 20.3 30.3 15.25 52.5 20.8 30.3 15.56 57.5 21.5 30.8 15.67 53.0 20.6 32.5 15.68 55.0 21.5 NA 15.7 #Dfrm 这个变量就是一个数据框2.2 外部数据的载入2.2.1 载入 excel 中的数据对于大型数据,使用 Excel 编辑后再导入到 R 的方法步骤包括:(1)将 Excel 中的数据准备好,像 SPSS 那样,将数据排列
12、为样本-变量的形式,以 Excel 中的第一列来识别样本单元,第一行作为变量名(2)另存为文本文件(制表符分隔)(3 )关闭 excel 后用 read.table 函数将数据载入到 R 中Squid=read.table(file=“D:RBooksquid.txt“,header=TRUE) #header=TRUE 表示第一行包括标签,如果没有标签的话可以将其改为 header=FALSE这个命令实现把数据框从 squid.txt 文件中读取出来,以数据框的形式存储到 squid 中SquidSample Year Month Location Sex GSI1 1 1 1 1 2 10
13、.44322 2 1 1 3 2 9.83313 3 1 1 1 2 9.73564 4 1 1 1 2 9.31075 5 1 1 1 2 8.9926第三章 访问变量和处理数据子集3.1 访问数据框变量setwd(“d:/RBook/“) #斜线有两种,一种是”,另一种是”/”Squid=read.table(file=“squid.txt“,header=TRUE) #注意与上面的写法的区别,这里使用了 setwed 函数,此时我们只需要做的是改一下 setwed 函数中的目录名就可以了SquidSample Year Month Location Sex GSI1 1 1 1 1 2
14、10.44322 2 1 1 3 2 9.83313 3 1 1 1 2 9.73564 4 1 1 1 2 9.31075 5 1 1 1 2 8.9926#这样就生成了一个数据框,并且 R 中大部分函数用数据框工作,所以在使用 R 时更倾向于 setwd 而不是 scan 函数names(Squid)1 “Sample“ “Year“ “Month“ “Location“ “Sex“ “GSI“ #使用 names 命令查看正在处理的变量3.1.1 str 函数通过 str(结构)命令可以获知数据框中每个变量的属性str(Squid)data.frame: 2644 obs. of 6 v
15、ariables:$ Sample : int 1 2 3 4 5 6 7 8 9 10 .$ Year : int 1 1 1 1 1 1 1 1 1 1 .$ Month : int 1 1 1 1 1 1 1 1 1 2 .$ Location: int 1 3 1 1 1 1 1 3 3 1 .$ Sex : int 2 2 2 2 2 2 2 2 2 2 .$ GSI : num 10.44 9.83 9.74 9.31 8.99 .可以通过 str 函数来检验分隔符是否使用正确:setwd(“d:/RBook“)Squid2=read.table(file=“squidGSI.tx
16、t“,dec=“,“,header=TRUE)str(Squid2)data.frame: 2644 obs. of 6 variables:$ Sample : int 1 2 3 4 5 6 7 8 9 10 .$ Year : int 1 1 1 1 1 1 1 1 1 1 .$ Month : int 1 1 1 1 1 1 1 1 1 2 .$ Location: int 1 3 1 1 1 1 1 3 3 1 .$ Sex : int 2 2 2 2 2 2 2 2 2 2 .$ GSI : Factor w/ 2472 levels “0.0064“,“0.007“,: 1#错误
17、地告诉 R 在文件中小数的分隔符是逗号”,” 而不是点”.”,GSI 被认为是一个因子,GSI 不是数值型。因此 read.table 函数、names 函数以及 str 函数可以结合在一起使用。Year错误: 找不到对象YearGSI错误: 找不到对象GSI #在这里,R 无法识别数据框 Squid 中的任何变量,出错3.1.2 函数中的数据参数(访问数据框中变量的方法)确定 R 中的一个函数(如线性回归方程 lm) ,根据变量(如 GSI、Month、Year 、Location)指定模型最后告诉函数 lm 在数据框 Squid 中可以找到数据。setwd(“d:/RBook/“)Squi
18、d=read.table(file=“squid.txt“,header=TRUE)M1=lm(GSIfactor(Location)+factor(Year),data=Squid) #“data=”是告诉 R,变量在数据框 Squid 中M1Call:lm(formula = GSI factor(Location) + factor(Year), data = Squid)Coefficients:(Intercept) factor(Location)2 factor(Location)3 factor(Location)4 factor(Year)2 factor(Year)3 fa
19、ctor(Year)41.3939 -2.2178 -0.1417 0.3138 1.3548 0.9564 1.2270注:并不是所有函数都支持 data 选项,例如 mean 就会出错mean(GSI,data=Squid)错误于 mean(GSI, data = Squid) : 找不到对象GSI #出现错误的原因是函数 mean 不含 data 参数总之,如果一个函数有 data 参数就使用它,这是最简洁的编程方法3.1.3 $符号方法一:在一个函数没有 data 参数的情况下访问变量则需要用到 $符号Squid$GSI方法二:访问指定行列(GSI 变量在数据框中的第六列)Squid,
20、6无论是使用哪种方法都可以计算平均值mean(Squid$GSI)1 2.187034mean(Squid,6)1 2.187034 #该方法容易导致遗忘,一段时间后有可能会忘记 GSI 数据在第六列3.1.4 attach 函数也可以说是方法三,如果想使用 GSI 数据集里的某个变量就要每次输入 Squid$,比较繁琐,使用 attach 可以避免这种麻烦,该命令使数据框 Squid 里所有的变量都是可用的。setwd(“d:/RBook/“)Squid=read.table(file=“squid.txt“,header=TRUE)attach(Squid) #attach 命令把 Squ
21、id 添加到 R 的搜索路径里GSI #对于其他变量同样适用此时就可以使用每一个函数了而不需要 data 参数注意:如果绑定一个与外部具有相同变量名称的数据框,或绑定的两个数据框具有相同名称的变量时就会出问题。解决方法:要么使用 datach 函数,要么处理一个新的数据集时简单地关闭 R 控制台并重启为了避免复制变量,不要输入 attach(Squid)命令两次3.2 访问数据子集使用 unique 命令显示这个变量里有多少个唯一值:setwd(“d:/RBook/“)Squid=read.table(file=“squid.txt“,header=TRUE)unique(Squid$Sex)
22、 1 2 1 #1 表示雄性,2 表示雌性现需访问所有雄性数据:Sel=Squid$Sex=1 #生成一个向量 Sel 与变量 Sex 具有相同长度如果 Sex 值为 1 则变量的值是 TRUE,这样的向量称为布尔向量SquidM=SquidSel, #选择 Squid 中 Sel 等于 TRUE 的行,并将选择出来的数据存储到 SuqidM 中SquidMSample Year Month Location Sex GSI24 24 1 5 1 1 5.297048 48 1 5 3 1 4.296858 58 1 6 1 1 3.500860 60 1 6 1 1 3.248761 61
23、1 6 1 1 3.2304同时,可以把上述两条命令合并成一条:获取雌性数据SquidM=SquidSquid$Sex=2,SquidMSample Year Month Location Sex GSI1 1 1 1 1 2 10.44322 2 1 1 3 2 9.83313 3 1 1 1 2 9.73564 4 1 1 1 2 9.31075 5 1 1 1 2 8.9926基于第二个变量的值的条件下选择变量数据(或数据框)的过程称为条件选择为了提取位置 1,2 或 3 的数据,可以使用以下语句得出相同的结果Squid123=SquidSquid$Location=1|Squid$Lo
24、cation=2|Squid$Location=3,Squid123=SquidSquid$Location=1&Squid$Location (或 0-长度的 row.names)3.2.1 数据排序现根据变量“月份”由低到高的值排列 GSI 数据setwd(“d:/RBook/“)Squid=read.table(file=“squid.txt“,header=TRUE)Ord=order(Squid$Month)SquidOrd, #需要处理的是 Squid 的行,所以把 Ord 放在逗号前Sample Year Month Location Sex GSI1 1 1 1 1 2 10.
25、44322 2 1 1 3 2 9.83313 3 1 1 1 2 9.73564 4 1 1 1 2 9.31075 5 1 1 1 2 8.99263.3 使用相同的标识符组合两个数据集这里需要处理两个或以上具有相同标识符的不同文件或工作表合并两个数据集使得第一个数据集里第 j 个样品放在第二个数据集里第 j 个样品的旁边(其中故意删除了第四个数据)setwd(“d:/RBook/“)Sq1=read.table(file=“squid1.txt“,header=TRUE)Sq2=read.table(file=“squid2.txt“,header=TRUE) #用来读取两个单独的文件S
26、quidMerged=merge(Sq1,Sq2,by=“Sample“) #merge 函数命令#merge 函数命令采用两个数据框 Sq1 和 Sq2 作为参数并使用变量 Sample 作为相同的标识符合并两个数据集。该函数的一个有用的选项是 all,缺省状态下的设置是 FALSE,含义就是 Sq1 和 Sq2 的行如果有缺失值将被忽略,同理,当 all为 TRUE 时,有一方的数据在另一方没出现的话就用 Na 填充。SquidMergedSample GSI YEAR MONTH Location Sex1 1 10.4432 1 1 1 22 2 9.8331 1 1 3 23 3 9
27、.7356 1 1 1 24 5 8.9926 1 1 1 25 6 8.7707 1 1 1 26 7 8.2576 1 1 1 2 #合并之后第四个样品数据丢失!setwd(“d:/RBook/“)Sq1=read.table(file=“squid1.txt“,header=TRUE)Sq2=read.table(file=“squid2.txt“,header=TRUE)SquidMerged=merge(Sq1,Sq2,by=“Sample“,all=TRUE) SquidMergedSample GSI YEAR MONTH Location Sex1 1 10.4432 1 1
28、1 22 2 9.8331 1 1 3 23 3 9.7356 1 1 1 24 4 9.3107 NA NA NA NA5 5 8.9926 1 1 1 26 6 8.7707 1 1 1 27 7 8.2576 1 1 1 23.4 输出数据此处使用的是 write.table 把数字信息输出到 ascii 文件中的命令(与 read.table 读取文件命令相对应)setwd(“d:/RBook/“) #锁定需要输入输出的文件夹Squid=read.table(file=“squid.txt“,header=TRUE) #用 read.table 命令读取原始文件中的数据SquidM=S
29、quidSquid$Sex=1, #选择变量 Sex 中为雄性即 1 的数据存入 SquidM 变量write.table(SquidM,file=“MaleSquid1.txt“,sep=“ “,quote=FALSE,append=FALSE,na=“NA“) #使用 write.table 命令将 SquidM 变量输出,在 d:/RBook/文件夹中生成一个名为 MaleSquid1.txt 的 txt 文件。注:在 write.table 函数里第一个参数是想要输出的变量, sep=“ “保证数据用空格隔开, na=“NA“指定缺失值由什么来代替,引述 quote=FALSE 消除字
30、符串(标题)的引号标志,append 表示是否将这些数据添加到已有的文件尾部,TRUE 表示要添加,FALSE 就不添加,所以会新建一个新的文件(在本例中,因需要新建一个文件故要选择 FALSE)注:这些元素用空格进行隔离在这里缺少了第一列的名字,可通过改变 sep 和 quote 选项setwd(“d:/RBook/“)Squid=read.table(file=“squid.txt“,header=TRUE)SquidM=SquidSquid$Sex=1,write.table(SquidM,file=“MaleSquid2.txt“,sep=“,“,quote=TRUE,append=F
31、ALSE,na=“NA“)同上,R 就会在 d:/RBook/文件夹中生成一个名为 MaleSquid.txt 的 txt 文件3.5 重新编码分类变量从前面章节中可以使用 str 函数鱿鱼数据框中每个变量的属性概念:从输出的结果可以看出,变量 Location 编码为 1,2,3 或 4,Sex 为 1,2 或 3,这样的变量是分类或名义变量,把名义变量重新编码、在数据框中生成一个新的变量有助于我们编程setwd(“d:/RBook/“)Squid=read.table(file=“squid.txt“,header=TRUE)Squid$Sexfactor(Squid$Sex) #试输出
32、Squid$Sex 和 factor(Squid$Sex),两者的区别在于 factor 命令会多输出一行,Levels: 1 2,说明Sex 有两个水平,1 和 2Squid$fSex=factor(Squid$Sex) #将 factor(Squid$Sex)存放到一个新的变量 fSex 中,在变量名前使用 f 用以表示它是名义变量,也被称为因子Squid$fSex=factor(Squid$Sex,levels=c(1,2),labels=c(“M“,“F“) #将因子 fSex 中的 1,2 转换为 M,F#将所有 1 和 2 转换为 M 和 F 后再用 str 命令查看数据框 Squ
33、id,对比两次 Squid 发现框中多了 fSex 因子查看 Squid 中的 fSex 因子:已经由原来的 1,2 转换为 M,F 了使用 fSex 因子:SquidM=SquidSquid$fSex=“M“, #同时对比使用 Sex 变量 SquidM=SquidSquid$Sex=1,注:在这里,直接输入 Squid$fSex 不用加入 factor 即可显示出 factor(Squid$Sex)的效果(在输出所有元素后额外显示多一行 Levels: M F 用以告诉我们 fSex 由两个水平 M 和 F)why?第四章 简单的函数4.1 tapply 函数setwd(“d:/RBook
34、“)Veg=read.table(file=“Vegetation2.txt“,header=TRUE)names(Veg) #查看 Veg 中所有的变量名4.1.1 计算每个时间截面的均值注意这里需要用到两个变量m=mean(Veg$R)m1=mean(Veg$RVeg$Transect=1)m2=mean(Veg$RVeg$Transect=2)m3=mean(Veg$RVeg$Transect=3)m4=mean(Veg$RVeg$Transect=4)m5=mean(Veg$RVeg$Transect=5)m6=mean(Veg$RVeg$Transect=6)m7=mean(Veg$
35、RVeg$Transect=7)m8=mean(Veg$RVeg$Transect=8)c(m,m1,m2,m3,m4,m5,m6,m7,m8) #变量 m 表示所有 8 个时间截面的平均丰富度,m1 到 m8 表示每个时间截面的平均丰富度注:mean 使用的对象是数据向量 Veg$R,它不是一个矩阵!所以不在方括号之间加入逗号。4.1.2 更高效地计算每个时间截面的均值无论是 tapply 函数、 lapply 函数还是 sapply 函数,都是对其变量中的所有数据进行操作使用 tapply 函数(用于分组统计)可以完成上面从 m1 到 m8 的操作Veg$Transect1 1 1 1 1
36、 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 647 7 7 7 7 7 7 8 8 8 8 8 8Veg$R1 8 6 8 8 10 7 6 5 8 6 6 6 6 6 7 10 8 18 12 11 7 10 8 9 6 12 13 10 8 8 1332 16 9 14 11 13 11 12 9 10 14 14 10 14 9 12 11 12 14 9 5 12 9 10 16 12 10 14tapply(Veg$R,Veg$Transect,mean)1 2
37、3 4 5 6 7 8 7.571429 6.142857 10.375000 9.250000 12.375000 11.500000 10.500000 11.833333#tapply 函数根据第二个变量(Transect)的不同水平(截面的不同)对第一个变量( R)进行求均值运算使用 tapply 函数还可以其求其他数值Me=tapply(Veg$R,Veg$Transect,mean) Sd=tapply(Veg$R,Veg$Transect,sd) #求标准差Le=tapply(Veg$R,Veg$Transect,length) #求长度cbind(Me,Sd,Le)Me Sd
38、Le1 7.571429 1.3972763 72 6.142857 0.8997354 73 10.375000 3.5831949 84 9.250000 2.3145502 85 12.375000 2.1339099 86 11.500000 2.2677868 87 10.500000 3.1464265 68 11.833333 2.7141604 64.2sapply 函数和 lapply 函数sapply(Veg,5:9,FUN=mean) #为了节省空间只去第五到第九的变量,因选择的是列所以 5:9 在,后R ROCK LITTER ML BARESOIL 9.965517
39、20.991379 22.853448 1.086207 17.594828 #求出这五个向量中数据的均值注:tapply 函数计算的是一个变量观察值子集的均值,而 lapply 和 sapply 函数计算的是一个变量或多个变量全部观察值的均值。FUN 代表函数(function) ,必须大写lapply 和 sapply 的区别在于输出的不同:lapply(Veg,5:9,FUN=mean)$R1 9.965517$ROCK1 20.99138$LITTER1 22.85345$ML1 1.086207$BARESOIL1 17.59483#lapply 函数输出的是一个列表,而 sappl
40、y 输出的是一个向量:sapply(Veg,5:9,FUN=mean)R ROCK LITTER ML BARESOIL 9.965517 20.991379 22.853448 1.086207 17.5948284.3summary 函数:统计变量信息的函数Z=cbind(Veg$R,Veg$ROCK,Veg$LITTER)colnames(Z)=c(“R“,“ROCK“,“LITTER“) #由于在 cbind 的过程中会丢失变量标签(下面的方法就不会)所以重新添加summary(Z) # 三行代码也可用 summary(Veg,c(“R“,“ROCK“,“LITTER“)或 summa
41、ry(Veg,c(5,6,7)R ROCK LITTER Min. : 5.000 Min. : 0.00 Min. : 5.00 1st Qu.: 8.000 1st Qu.: 7.25 1st Qu.:17.00 Median :10.000 Median :18.50 Median :23.00 Mean : 9.966 Mean :20.99 Mean :22.85 3rd Qu.:12.000 3rd Qu.:27.00 3rd Qu.:28.75 Max. :18.000 Max. :59.00 Max. :51.00 #summary 会给出变量的最值、第一四三四分位数、中位数和
42、平均值4.4 table 函数setwd(“d:/RBook“)Deer=read.table(file=“Deer.txt“,header=TRUE)错误于 scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 657 行没有 9 元素 #读取数据过程中遇到问题出错解决方法:setwd(“d:/RBook“)Deer=read.table(file=“Deer.txt“,fill=TRUE,header=TRUE) #增加 fill 参数,Deer Farm Month Year Sex clas1_4 LCT
43、 KFI Ecervi Tb1 AL 10 0 1 4.0 191.000 20.45000 0.00000 02 AL 10 0 1 4.0 180.000 16.40000 0.00000 0如果使用 read.csv 读取又会显示有问题:setwd(“d:/RBook“)Deer=read.csv(file=“Deer.txt“ ,header=TRUE)DeerFarm.Month.Year.Sex.clas1_4.LCT.KFI.Ecervi.Tb1 ALt10t00t1t4t191t20.45t0t02 ALt10t00t1t4t180t16.4t0t03 ALt10t00t1t3
44、t192t15.9t2.38t04 ALt10t00t1t4t196t17.3t0t0 #每个数据均出现了 t解决方法:setwd(“d:/RBook“)Deer=read.csv(file=“Deer.txt“,sep=“t“,header=TRUE)DeerFarm Month Year Sex clas1_4 LCT KFI Ecervi Tb1 AL 10 0 1 4.0 191.000 20.45000 0.00000 02 AL 10 0 1 4.0 180.000 16.40000 0.00000 03 AL 10 0 1 3.0 192.000 15.90000 2.38000
45、 04 AL 10 0 1 4.0 196.000 17.30000 0.00000 0第五章 基本绘图工具简介5.1 plot 函数setwd(“d:/RBook“)Veg=read.table(file=“Vegetation2.txt“,header=TRUE)plot(Veg$BARESOIL,Veg$R,xlab=“BARESOIL“,ylab=“R“) #或写成 plot(x= Veg$BARESOIL,y= Veg$R)#plot 命令的第一个参数(BARESOIL)显示在 X 轴,第二个参数(R )显示在垂直轴上。应注意哪个变量在 X 轴上,哪个变量在 Y 轴上基础修改:对图形
46、添加标题和 x,y 轴标签以及设置 x,y 轴坐标界限plot(x= Veg$BARESOIL,y= Veg$R,xlab=“Exposed soil“,ylab=“Species richness“,main=“Scatter plot“,xlim=c(0,45),ylim=c(4,19)坐标界限5.2 符号、颜色和尺寸在原有基础上使用 pch 选项具体指定绘图字符plot(x= Veg$BARESOIL,y= Veg$R,xlab=“Exposed soil“,ylab=“Species richness“,main=“Scatter plot“,xlim=c(0,45),ylim=c(4,19),pch=16)#实心圆对应着 pch=16使用不同的符号表示每个截面的观察值(Vegetation2 文件中的 Transect 向量 factor 值为 8)例题 1:用不同的符号表示这 8 个截面的观察值!思路:用一个与 BARESOIL 和丰富度 R 具有相同长度的数值向量并对截面1 的所有