R语言基础汇总

Python030

R语言基础汇总,第1张

%>%是管道符的意思,把左边的输出(不包括 <- 之前的)当成右边的输入。

都可以shift + alt + 上下 :快速复制粘贴

alt + 上下 :移动行

ctrl + alt + 上下 :多重光标

首先选中要注释掉的行,然后按Ctrl+shift+C ,这样就注释掉了。

sessionInfo()

.libPaths()

一篇关于包的博客

library(installr)

updateR()

COS中文论坛 统计之都旗下的论坛网站(d.cosx.org),它和其主站(cosx.org)一 起,是一个致力于推广与应用统计学知识的网站和社区。

1 help("t.test")

2 ?t.test

3 help.search("t.test")

4 apropos("t.test")

5 RGui>Help>Html help

6 查看R包pdf手册

getwd() 显示工作目录

setwd() 设定工作目录

list.files() 列出目录或文件夹下的文件

demo( ) 显示R的基本程序包

example( ) 显示在线帮助的例子

example(barplot)

可以把若干行命令保存在一个文本文件(比如Eg3.R)中,然 后用source函数来运行整个文件: source("E:/R demo/Chapter1-Eg3.R")

sum, mean, var, sd, min, max, range, median, IQR(四分位间距)等为统计量, sort,order,rank与排序有关, 其它还有ave,fivenum,mad,quantile, stem等

-1:1/0 当中/是优先级靠后的操作。相当于c(-1,0,1)/0

names(df) <- c("male", "female", "unknown")

对于矩阵,我们可以使用属性rownames和colnames来访问行名和列名。

我们也可以先定义矩阵x然后再为dimnames(x)赋值:

数值型数据 :1.2345e30

复数常量就用3.5-2.1i

缺失值:NA(Not Available)

是否含有缺失值:

NaN表示不确定的数

NaN属于NA的一种

NA不是NaN

注意下面例子的比较 :

assign("x1", c(1, 2))

sort(x)返回x的元素从小到大排序的结果向量。

x=c(2,10,6,8,4,5)sort(x) [1] 2 4 5 6 8 10  order(x)返回使得x从小到大排列的元素下标向量(x[order(x)]等效于sort(x))。

此外numeric(n)可以产生一个长度为n的零向量(numeric(n)是一个 很好用的外部存储器)

paste函数用来把它的自变量连成一个字符串,中间用空格分开

Re( )计算实部,Im( )计算虚部, Mod( ) 计算复数模,Arg( )计算复数幅角。

v为一个向量,取值在-length(x)到-1之间,表示扣除相应 位置的元素。例如:

可以用x[]的写法:

R的对象有两个基本的属性:类型属性(mode)和长度属性(length)。

长度为零的向量 numeric( ) 或者 numeric(0) character( ) 或者 character(0)

数组(array): 带多个下标的类型相同的元素的集合,

函数matrix():用于构造二维数组,即矩阵

函数factor( )用来把一个向量编码成为一个因子。

可以自行指定各离散取值水平(levels),不指定时由x的不同值来求得。

• labels可以用来指定各水平的标签,不指定时用各离散取值的对应字符串。

• exclude参数用来指定要转换为缺失值(NA)的元素值集合。

• ordered取真值时表示因子水平(Levels)是有次序的

因子可以用来作为另外的同长度变量的分类变量,使用tapply() 函数可以完成分类统计

nchar()这个函数简单,统计向量中每个元素的字符个数

tolower()和toupper()可以进行大小写字母的转换

chartr()把字符串里的元素,按要求进行转换

拆分字符串用strsplit()函数,strsplit得到的结果是列表,后面的处理要调用列表

其任何一个语句都可以看成是一个表达式。

表达式之间以分号分隔或用换行分隔。

表达式可以续行,只要前一行不是完整表达式,则下一行为上一行的继续。

线性回归模型:

lm()函数的返回值叫做模型拟合结果对象,本质上是一个列表, 有model 、coefficients、residuals等成员。lm()的结果显示十分 简单,为了获得更多的拟合信息,可以使用对lm类对象有特 殊操作的通用函数,这些函数包括:

add1 coef effects kappa predict residuals alias deviance family labels print summary anova drop1 formula plot proj

加号+或 者减号-,表示在模型中加入一项或去掉一项,第一项前面如果是加号可以 省略

在非交互运行(程序)中应使用print()来输出。

• digits参数指定每个数输出的有效数字位数;

• quote 参数指定字符串输出时是否带两边的撇号;

• print.gap参数指定矩阵或数组输出时列之间的间距

也用来输出,但它可以把多个参数连接起来再输出(具有paste() 的功能)。例如:

读取文件:

strsplit()得到的结果是 列表。

grep() grepl()

sub()和gsub()

但严格地说R语言 没有字符串替换的函数,因为R语言不管什么操作对参数都是传值不传址,区别如下:

用substr()和substring() 可以通过位置进行字符串拆分或提取,两者的参数设置基本相同:

strtrim() 函数可以用于将字符串修剪到特定的显示宽度通过位置进 行字符串拆分或提取:

由于日期内部是用double存储的天数,所以是可以相减的。

weekdays ( )取日期对象所处的周几;

months ( )取日期对象的月份;

quarters ( )取日期对象的季度;

其任何一个语句都可以看成是一个表达式。

表达式之间以分号分隔或用换行分隔。

表达式可以续行,只要前一行不是完整表达式,则下一行为上一行的继续。

quantile(x, probs=seq(0,1,0.25), na.rm=FALSE, names=TRUE, type=7, …)

probs给出相应的百分位数,默认值是0,0.25,0.5,0.75,1;na.rm是处 理缺失数据的,na.rm=TRUE时,NA和NaN将从数据中移走,向量取值中 若有NA或NaN,要添加这一参数,否则会出错;names若为TRUE,返回 值当中有names这个属性"type是取值1-9的整数,选择了九种分位数算法 (具体算法见帮助文件)中的一种。

数据的分布主要考察分布函数(p), 密度函数(d), 分位数函数(q)及产生随机数(r)

以正态分布为例:

hist(x, breaks="Sturges", freq=NULL, probability=!freq,… )

break规定了直方图的组距(必须覆盖数据的范围);freq是逻辑变量,TRUE是频率直方图, FALSE是密度直方图;probability和freq相反,TRUE是密度直方图,FALSE是频率直方图

其形式为 coplot(y ~ x | z),其中x 和y是数值型向量,z是同长度的因子。 对z的每一水平,绘制相应组的x和y的散点图

R缺省的图形边空常常太大,以至于有时图形窗口较小时边空占了整个图形的很大一部分。

R可以在同一页面开若干个按行、列排列的窗格,在每个窗格中可以作一 幅图。每个图有自己的边空,而所有图的外面可以包一个“外边空”。

一页多图用 mfrow 参数或 mfcol 参数规定,如

函数 mtext 用来在外边空加文字标注。其用法为

在多图环境中还可以用 mfg 参数来直接跳到某一个窗格,比如

可以不使用多图环境而直接在页面中的任意位置产生一个窗格来绘图,参数为 fig ,如:

先用as.factor()转化成因子。因为levels()函数里面必须是因子。

dat$Genre没有转化成因子形式,as.factor(dat$Genre)就可以了

该消息表明文件的最后一行不以行尾 (EOL) 字符结尾(换行符 ( \n ) 或回车 + 换行符 ( \r\n ))。此消息的初衷是警告您该文件可能不完整;大多数数据文件都有一个 EOL 字符作为文件中的最后一个字符。

这是因为R读取文件的时候,是一整段character,所以它只会返回1,适当给他分一下段。

看注释前的字母。

R语言初学指南可在脚本中加入注释。在脚本中,任何以“#”(sharp/numbersymbol)开头的命令行都会被R忽略。

同样,若“#”出现在某行的中间,则该行中“#”后面的语句都会被忽略。可利用这一特性对脚本添加注释,以便用户或他人日后查阅。

例如,作者每次查看前一天编写的脚本时,都要重新梳理并回忆每条脚本语句的作用。

R Read.delim Example

read.delim() function reads a file into list. The file by default is separated by tab, it can be comma delimited or any other delimiter specified by parameter "sep=". If the parameter "header=" is "TRUE", then the first row will be treated as the row names. 

read.delim(file, header = FALSE,sep = "\t",quote = "\"",          dec = ".", fill = TRUE, comment.char = "", ...)

read.delim2(file, header = TRUE,sep = "\t",quote = "\"",          dec = ",", fill = TRUE, comment.char = "", ...)

• file: file name

• header: 1st line as header or not, logical

• sep: field separator

• quote: quoting characters

... 

read.delim() is almost the same as read.table(), except the field separator is tab by default. It is convenient for open tab delimited file. 

----------------------------------------------------------------------------------------------------------

数read.table是读取矩形格子状数据最为便利的方式。因为实际可能遇到的情况比较多,所以预设了一些函数。这些函数调用了read.table但改变了它的一些默认参数。

注意,read.table不是一种有效地读大数值矩阵的方法:见下面的scan函数。

一些需要考虑到问题是:

编码问题

如果文件中包含非-ASCII字符字段,要确保以正确的编码方式读取。这是在UTF-8的本地系统里面读取Latin-1文件的一个主要问题。此时,可以如下处理

read.table(file("file.dat", encoding="latin1"))

注意,这在任何可以呈现Latin-1名字的本地系统里面运行。

首行问题

我们建议你明确地设定header参数。按照惯例,首行只有对应列的字段而没有行标签对应的字段。因此,它会比余下的行少一个字段。(如果需要在 R 里面看到这一行,设置header = TRUE。)如果要读取的文件里面有行标签的头字段(可能是空的),以下面的方式读取

read.table("file.dat", header = TRUE, row.names = 1)

列名字可以通过col.names显式地设定;显式设定的名字会替换首行里面的列名字(如果存在的话)。

分隔符问题

通常,打开文件看一下就可以确定文件所使用的字段分隔符,但对于空白分割的文件,可以选择默认的sep = ""(它能使用任何空白符作为分隔符,比如空格,制表符,换行符),sep = " "或者sep = "t"。注意,分隔符的选择会影响输入的被引用的字符串。

如果你有含有空字段的制表符分割的文件,一定要使用sep = "t"。

引用 默认情况下,字符串可以被"或'括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数quote控制。对于sep = "n",默认值改为quote = ""。

如果没有设定分隔字符,在被引号括起的字符串里面,引号需要用 C格式的逃逸方式逃逸,即在引号前面直接加反斜杠。

如果设定了分隔符,在被引号括起的字符串里面,按照电子表格的习惯,把引号重复两次以达到逃逸的效果。例如

'One string isn''t two',"one more"

可以被下面的命令读取

read.table("testfile", sep = ",")

这在默认分隔符的文件里面不起作用。

缺损值 默认情况下,文件是假定用NA表示缺损值,但是,这可以通过参数na.strings改变。参数na.strings是一个可以包括一个或多个缺损值得字符描述方式的向量。

数值列的空字段也被看作是缺损值。

在数值列,值NaN,Inf和-Inf都可以被接受的。

尾部空字段省略的行

从一个电子表格中导出的文件通常会把拖尾的空字段(包括?堑姆指舴? 忽略掉。为了读取这样的文件,必须设置参数fill = TRUE。

字符字段中的空白

如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数strip.white = TRUE。

空白行

默认情况下,read.table忽略空白行。这可以通过设置blank.lines.skip = FALSE来改变。但这个参数只有在和fill = TRUE共同使用时才有效。这时,可能是用空白行表明规则数据中的缺损样本。

变量的类型

除非你采取特别的行动,read.table将会为数据框的每个变量选择一个合适的类型。如果字段没有缺损以及不能直接转换,它会按logical,integer,numeric和complex的顺序依次判断字段类型。如果所有这些类型都失败了,变量会转变成因子。

参数colClasses和as.is提供了很大的控制权。as.is会抑制字符向量转换成因子(仅仅这个功能)。colClasses运行为输入中的每个列设置需要的类型。

注意,colClasses和as.is对 每 列专用,而不是 每 个变量。因此,它对行标签列也同样适用(如果有的话)。

注释

默认情况下,read.table用#作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。

如果确认数据文件中没有注释内容,用comment.char = ""会比较安全 (也可能让速度比较快)。

逃逸

许多操作系统有在文本文件中用反斜杠作为逃逸标识字符的习惯,但是Windows系统是个例外(在路径名中使用反斜杠)。在 R 里面,用户可以自行设定这种习惯是否用于数据文件。

read.table和scan都有一个逻辑参数allowEscapes。从 R 2.2.0 开始,该参数默认为否,而且反斜杠是唯一被解释为逃逸引用符的字符(在前面描述的环境中)。如果该参数设为是,以C形式的逃逸规则解释,也就是控制符如a, b, f, n, r, t, v,八进制和十六进制如40和x2A一样描述。任何其它逃逸字符都看着是自己,包括反斜杠。

常用函数read.csv和read.delim为read.table设定参数以符合英语语系本地系统中电子表格导出的CSV和制表符分割的文件。这两个函数对应的变种read.csv2和read.delim2是针对在逗号作为小数点的国家使用时设计的。

如果read.table的可选项设置不正确,错误信息通常以下面的形式显示

Error in scan(file = file, what  what, sep = sep 

或者

Error in read.table("files.dat", header = TRUE) : more columns than column names

这些信息可能足以找到问题所在,但是辅助函数count.fields可以进一步的深入研究问题所在。

读大的数据格子(data grid)时,效率最重要。设定comment.char = "",以原子向量类型(逻辑型,整型,数值型,复数型,字符型或原味型)设置每列的colClasses,给定需要读入的行数nrows(适当地高估一点比不设置这个参数好)等措施会提高效率。