help("bs") No documentation for 'bs'in specified packages and libraries: you could try 'help.search("bs")' help("bs",try.all.packages TRUE) Help for topic'bs'is not in any loaded package but can be found in the following packages: Package Library splines /usr/lib/R/library 但注意在这种情况下,不会显示关于函数bs的帮助页面,如果使用者确 实想打开这样的页面而所属包又没有被载入内存时,可以使用packagei这个选 项: help("bs",package ="splines") bs package:splines R Documentation B-Spline Basis for Polynomial Splines Description: Generate the B-spline basis matrix for a polynomial spline. Html格式的帮助可以通过输入下面的函数启动 help.start() 在html格式的帮助页面中还可以使用关键词进行搜索。在See Also部分 中,可以通过超文本链接到其他相关函数的帮助页面。使用关键词的搜索 在R中也可以通过函数help.search来实现。这种方法能在所有已安装的包 中搜索包含给定字符串的相关内容。例如,运行help.search("tree")会 列出所有在帮助页面含有“tre”的函数。注意如果有一些包是最近才安 装的,应该首先使用函数help.search中的rebuildi选项来刷新数据库(e.g, help.search("tree",rebuild TRUE)). 使用函数apropos则能找出所有在名字中含有指定字符串的函数,但只会 在被载入内存中的包中进行搜索: apropos(help) [1]"help" "helpForCall""help.search" [4]"help.start" 8
> help("bs") No documentation for ’bs’ in specified packages and libraries: you could try ’help.search("bs")’ > help("bs", try.all.packages = TRUE) Help for topic ’bs’ is not in any loaded package but can be found in the following packages: Package Library splines /usr/lib/R/library 但注意在这种情况下,不会显示关于函数bs的帮助页面,如果使用者确 实想打开这样的页面而所属包又没有被载入内存时,可以使用package这个选 项: > help("bs", package = "splines") bs package:splines R Documentation B-Spline Basis for Polynomial Splines Description: Generate the B-spline basis matrix for a polynomial spline. ... Html格式的帮助可以通过输入下面的函数启动 > help.start() 在html格式的帮助页面中还可以使用关键词进行搜索。在See Also部分 中,可以通过超文本链接到其他相关函数的帮助页面。使用关键词的搜索 在R中也可以通过函数help.search来实现。这种方法能在所有已安装的包 中搜索包含给定字符串的相关内容。例如,运行help.search("tree")会 列出所有在帮助页面含有“tree”的函数。注意如果有一些包是最近才安 装的,应该首先使用函数help.search中的rebuild选项来刷新数据库(e.g., help.search("tree", rebuild = TRUE))。 使用函数apropos则能找出所有在名字中含有指定字符串的函数,但只会 在被载入内存中的包中进行搜索: > apropos(help) [1] "help" ".helpForCall" "help.search" [4] "help.start" 8
3R的数据操作 3.1对象 我们已经看到R通过一些对象来运行,当然首先这些对象是用它们的名称 和内容来刻画的,其次也通过对象的数据类型即属性来刻画。为了理解这些 属性的用处,我们以一个在{1,2,3}中取值的变量为例:这个变量可以是一个 整数变量(例如巢中蛋的个数),或者也可以是一个分类变量的编码(例如 某些甲壳类动物的三种性别:雄、雌和雌雄同体)。 显然对这个变量的统计分析在以上两例中将是不相同的,对象的属性 在R中提供着所需的信息。更技术性也更一般地说,对于作用于一个对象的函 数,其表现将取决于对象的属性。 所有的对象都有两个内在属性:类型和长度。类型是对象元素的基本种 类,共有四种:数值型,字符型,复数型7和逻辑型(FALSE.或TRUE),虽然也 存在其它的类型,但是并不能用来表示数据,例如函数或表达式:长度是对 象中元素的数目。对象的类型和长度可以分别通过函数mode和length得到。 >x<-1 mode(x) [1]"numeric" length(x) [1]1 >A <-"Gomphotherium";compar <-TRUE;z<-1i mode(A);mode(compar);mode(z) [1]"character" [1]"logical" [1]"complex" 无论什么类型的数据,缺失数据总是用NA(不可用)来表示:对很大的数 值则可用指数形式表示: >N<-2.1e23 N [1]2.1e+23 R可以正确地表示无穷的数值,如用Inf和-Inf表示士oo,或者用NaN(非 数字)表示不是数字的值。 7本手册中不讨论复数型 9
3 R的数据操作 3.1 对象 我们已经看到R通过一些对象来运行,当然首先这些对象是用它们的名称 和内容来刻画的,其次也通过对象的数据类型即属性来刻画。为了理解这些 属性的用处,我们以一个在{1,2,3}中取值的变量为例:这个变量可以是一个 整数变量(例如巢中蛋的个数),或者也可以是一个分类变量的编码(例如 某些甲壳类动物的三种性别:雄、雌和雌雄同体)。 显然对这个变量的统计分析在以上两例中将是不相同的,对象的属性 在R中提供着所需的信息。更技术性也更一般地说,对于作用于一个对象的函 数,其表现将取决于对象的属性。 所有的对象都有两个内在属性:类型和长度。类型是对象元素的基本种 类,共有四种:数值型,字符型,复数型7和逻辑型(FALSE或TRUE),虽然也 存在其它的类型,但是并不能用来表示数据,例如函数或表达式;长度是对 象中元素的数目。对象的类型和长度可以分别通过函数mode和length得到。 > x <- 1 > mode(x) [1] "numeric" > length(x) [1] 1 > A <- "Gomphotherium"; compar <- TRUE; z <- 1i > mode(A); mode(compar); mode(z) [1] "character" [1] "logical" [1] "complex" 无论什么类型的数据,缺失数据总是用NA(不可用)来表示;对很大的数 值则可用指数形式表示: > N <- 2.1e23 > N [1] 2.1e+23 R可以正确地表示无穷的数值,如用Inf和-Inf表示±∞,或者用NaN(非 数字)表示不是数字的值。 7本手册中不讨论复数型 9
>x<-5/0 >x [1]Inf exp(x) [1]Inf exp(-x) [1]0 xx [1]NaN 字符型的值输入时须加上双引号",如果需要引用双引号的话,可以 让它跟在反斜杠\后面:这两个字符合一起\"在某些函数如ct的输出显示 或write.table写入磁盘(参见p.14,函数的qmethod选项)时会被以特殊的方式 处理。 >x <-"Double quotes \delimitate R's strings." >x [1]"Double quotes \delimitate R's strings." cat(x) Double quotes delimitate R's strings. 也有另一种表示字符型变量的方法,即用单引号(?)来界定变量,这种情 况下不需要用反斜杠来引用双引号(但是引用单引号时必须要用!) >x <-'Double quotes delimitate R\'s strings.' >x [1]"Double quotes \delimitate R's strings." 下表给出了表示数据的对象的类别概览: 对象 类型 是否允许 同一个对象中 有多种类型? 向量 数值型,字符型,复数型,或逻辑型 否 因子 数值型或字符型 否 数组 数值型,字符型,复数型,或逻辑型 否 矩阵 数值型,字符型,复数型,或逻辑型 否 数据框 数值型,字符型,复数型,或逻辑型 是 时间序列(ts) 数值型,字符型,复数型,或逻辑型 否 列表 数值型,字符型,复数型,逻辑型, 是 函数,表达式, 10
> x <- 5/0 > x [1] Inf > exp(x) [1] Inf > exp(-x) [1] 0 > x - x [1] NaN 字符型的值输入时须加上双引号",如果需要引用双引号的话,可以 让它跟在反斜杠\后面;这两个字符合一起\"在某些函数如cat的输出显示 或write.table写入磁盘(参见p. 14,函数的qmethod选项)时会被以特殊的方式 处理。 > x <- "Double quotes \" delimitate R’s strings." > x [1] "Double quotes \" delimitate R’s strings." > cat(x) Double quotes " delimitate R’s strings. 也有另一种表示字符型变量的方法,即用单引号(’)来界定变量,这种情 况下不需要用反斜杠来引用双引号(但是引用单引号时必须要用!) > x <- ’Double quotes " delimitate R\’s strings.’ > x [1] "Double quotes \" delimitate R’s strings." 下表给出了表示数据的对象的类别概览: 对象 类型 是否允许 同一个对象中 有多种类型? 向量 数值型,字符型,复数型,或 逻辑型 否 因子 数值型或 字符型 否 数组 数值型,字符型,复数型,或 逻辑型 否 矩阵 数值型,字符型,复数型,或 逻辑型 否 数据框 数值型,字符型,复数型,或 逻辑型 是 时间序列(ts) 数值型,字符型,复数型,或 逻辑型 否 列表 数值型,字符型,复数型,逻辑型, 是 函数,表达式,. . . 10
向量是一个变量,其意思也即人们通常认为的那样:因子是一个分类变 量:数组是一个k维的数据表:矩阵是数组的一个特例,其维数k=2。注 意,数组或者矩阵中的所有元素都必须是同一种类型的:数据框是由一个 或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类 型:“s”表示时间序列数据,它包含一些额外的属性,例如频率和时间: 列表可以包含任何类型的对象,包括列表! 对于一个向量,用它的类型和长度足够描述数据:而对其它的对象则另 需一些额外信息,这些信息由外在的属性给出。这些属性中的是表示对象维 数的dim,比如一个2行2列的的矩阵,它的dim是一对数值[2,2,但是其长度 是4。 3.2在文件中读写数据 对于在文件读取和写入的工作,R使用工作目录来完成。可以使用命 令getwd()(获得工作目录)来找到目录,使用命令setwd("c:/data")或 者setwd("/home/paradis/R")来改变目录。如果一个文件不在工作目录里 则必须给出它的路径8。 R可以用下面的函数读取存储在文本文件(ASCI)中的数据:read.table (其中有若干参数,见后文),scan和read.fwf。R也可以读取以其他格式的 文件(Excel,SAS,SPSS,.)和访问SQL类型的数据库,但是基础包中并不 包含所需的这些函数。这些功能函数对于R的高级应用是十分有用的,但是我 们在这里将读取文件限定在ASCI格式。 函数read.table用来创建一个数据框,所以它是读取表格形式的数据的 主要方法。举例来说,对于一个名为data.dat的文件,命令: mydata <-read.table("data.dat") 将创建一个数据框名为mydata,数据框中每个变量也都将被命名, 缺省值为V1,V2,.并且可以单独地访问每个变量,代码为:mydata$V1, mydatas$v2,,或者用mydata["V1"],mydata["V2"],..,或者还有一种方 法,mydata[,1],mydata[,2],.9这里有一些选项的缺省值(即如果用户 不设定那么R将自动使用的值)见于下表: read.table(file,header FALSE,sep =""quote ="\"'"dec ="." row.names,col.names,as.is FALSE,na.strings "NA", colClasses NA,nrows =-1, skip =0,check.names TRUE,fill !blank.lines.skip, 8在Windows中,为Rgui.exe创建一个快捷方式是比较有用的,在快捷方式“属性”的“起 始位置”中改变目录,然后用此快捷方式启动R时这个目录就会成为工作目录 9注意这几种方法的结果是有区别的:mydata$v1和mydata[,1]是向量, 而mydata["v1"]是数据框。后面(p.19)将会讲到关于处理对象的详情。 11
向量是一个变量,其意思也即人们通常认为的那样;因子是一个分类变 量;数组是一个k维的数据表;矩阵是数组的一个特例,其维数k = 2。注 意,数组或者矩阵中的所有元素都必须是同一种类型的;数据框是由一个 或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类 型;“ts”表示时间序列数据,它包含一些额外的属性,例如频率和时间; 列表可以包含任何类型的对象,包括列表! 对于一个向量,用它的类型和长度足够描述数据;而对其它的对象则另 需一些额外信息,这些信息由外在的属性给出。这些属性中的是表示对象维 数的dim,比如一个2行2列的的矩阵,它的dim是一对数值[2,2],但是其长度 是4。 3.2 在文件中读写数据 对于在文件读取和写入的工作,R使用工作目录来完成。可以使用命 令getwd() (获得工作目录 )来找到目录,使用命令setwd("C:/data") 或 者setwd("/home/paradis/R") 来改变目录。如果一个文件不在工作目录里 则必须给出它的路径8。 R可以用下面的函数读取存储在文本文件(ASCII)中的数据:read.table (其中有若干参数,见后文),scan和read.fwf。R也可以读取以其他格式的 文件(Excel, SAS, SPSS, . . . ) 和访问SQL类型的数据库,但是基础包中并不 包含所需的这些函数。这些功能函数对于R的高级应用是十分有用的,但是我 们在这里将读取文件限定在ASCII格式。 函数read.table用来创建一个数据框,所以它是读取表格形式的数据的 主要方法。举例来说,对于一个名为data.dat的文件,命令: > mydata <- read.table("data.dat") 将创建一个数据框名为mydata,数据框中每个变量也都将被命名, 缺省值为V1, V2, . . .并且可以单独地访问每个变量,代码为:mydata$V1, mydata$V2, . . . , 或者用mydata["V1"], mydata["V2"], . . . , 或者还有一种方 法,mydata[, 1], mydata[,2 ], . . . 9 这里有一些选项的缺省值(即如果用户 不设定那么R将自动使用的值)见于下表: read.table(file, header = FALSE, sep = "", quote = "\"’", dec = ".", row.names, col.names, as.is = FALSE, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, 8在Windows中,为Rgui.exe创建一个快捷方式是比较有用的,在快捷方式“属性”的“起 始位置”中改变目录,然后用此快捷方式启动R时这个目录就会成为工作目录 9注 意 这 几 种 方 法 的 结 果 是 有 区 别 的 :mydata$V1和mydata[, 1]是 向 量 , 而mydata["V1"]是数据框。后面(p. 19)将会讲到关于处理对象的详情。 11
strip.white FALSE,blank.lines.skip TRUE, comment.char ="#" file 文件名(包在"“内,或使用一个字符型变量),可能需要全路径 (注意即使是在Vindows下,符号\也不允许包含在内,必须用/替 换),或者一个URL链接(http:/∥)(用URL对文件远程访问) header 一个逻辑值(FALSE or TRUE),用来反映这个文件的第一行是否包含 变量名 sep 文件中的字段分离符,例如对用制表符分隔的文件使用sp="\t” quote 指定用于包围字符型数据的字符 dec 用来表示小数点的字符 row.names 保存着行名的向量,或文件中一个变量的序号或名字,缺省时行号取 为1,2,3... col.names 指定列名的字符型向量(缺省值是:V1,V2,V3,·.) as.is 控制是否将字符型变量转化为因子型变量(如果值为FALSE),或者仍 将其保留为字符型(TUE)。a3.is可以是逻辑型,数值型或者字符 型向量,用来判断变量是否被保留为字符。 na.strings 代表缺失数据的值(转化为WA) colClasses 指定各列的数据类型的一个字符型向量 nrows 可以读取的最大行数(忽略负值) skip 在读取数据前跳过的行数 check.names 如果为IRUE,则检查变量名是否在R中有效 fill 如果为TUE且非所有的行中变量数目相同,则用空白填补 strip.white 在sep已指定的情况下,如果为TUE,则删除字符型变量前后多余的 空格 blank.lines.skip 如果为IRUE,忽略空白行 comment.char ·个字符用来在数据文件中写注释,以这个字符开头的行将被忽略 (要禁用这个参数,可使用comment.char-n") read.table的几个变种因为使用了不同的缺省值可以用在几种不同情况 下: read.csv(file,header TRUE,sep =""quote="\"",dec=".", fill=TRUE,...) read.csv2(file,header TRUE,sep =";"quote="\"",dec=",", fill=TRUE,...) read.delim(file,header TRUE,sep ="\t",quote="\"",dec=".", fill=TRUE,...) read.delim2(file,header TRUE,sep ="\t",quote="\"",dec=",", fill=TRUE,...) 函数scan比read.table要更加灵活,它们的区别之一是前者可以指定变 量的类型,例如: 12
strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#") file 文件名(包在""内,或使用一个字符型变量),可能需要全路径 (注意即使是在Windows下,符号\ 也不允许包含在内,必须用/替 换),或者一个URL链接(http://...)(用URL对文件远程访问) header 一个逻辑值(FALSE or TRUE),用来反映这个文件的第一行是否包含 变量名 sep 文件中的字段分离符,例如对用制表符分隔的文件使用sep="\t" quote 指定用于包围字符型数据的字符 dec 用来表示小数点的字符 row.names 保存着行名的向量,或文件中一个变量的序号或名字,缺省时行号取 为1, 2, 3, . . . col.names 指定列名的字符型向量(缺省值是:V1, V2, V3, . . . ) as.is 控制是否将字符型变量转化为因子型变量(如果值为FALSE),或者仍 将其保留为字符型(TRUE)。as.is可以是逻辑型,数值型或者字符 型向量,用来判断变量是否被保留为字符。 na.strings 代表缺失数据的值(转化为NA) colClasses 指定各列的数据类型的一个字符型向量 nrows 可以读取的最大行数(忽略负值) skip 在读取数据前跳过的行数 check.names 如果为TRUE,则检查变量名是否在R中有效 fill 如果为TRUE且非所有的行中变量数目相同,则用空白填补 strip.white 在sep已指定的情况下,如果为TRUE,则删除字符型变量前后多余的 空格 blank.lines.skip 如果为TRUE,忽略空白行 comment.char 一个字符用来在数据文件中写注释,以这个字符开头的行将被忽略 (要禁用这个参数,可使用comment.char = "") read.table的几个变种因为使用了不同的缺省值可以用在几种不同情况 下: read.csv(file, header = TRUE, sep = ",", quote="\"", dec=".", fill = TRUE, ...) read.csv2(file, header = TRUE, sep = ";", quote="\"", dec=",", fill = TRUE, ...) read.delim(file, header = TRUE, sep = "\t", quote="\"", dec=".", fill = TRUE, ...) read.delim2(file, header = TRUE, sep = "\t", quote="\"", dec=",", fill = TRUE, ...) 函数scan比read.table要更加灵活,它们的区别之一是前者可以指定变 量的类型,例如: 12