R语言基础汇总

Python013

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语言数据对象与运算R语言数据对象与运算 笔记整理2.1 数据对象及类型R语言创建和控制的实体被称为对象(object)ls()命令来查看当前系统里的数据对象R对象的名称必须以一个英文字母打头,并由一串大小写字母、数字或钟点组成注意:R区分大小写不要用R的内置函数名称作为数据对象的名称,如c、length等2.2 数据对象类型R语言的对象包括数值型(numeric):实数, 可写成整数(integers)、小数(decimal fractions)、科学记数(scientific notation)逻辑型(logical):T(true)或F(FALSE)字符型(character):夹在" "或之间复数型(complex):形如a+bi原味型(raw):以二进制形式保存数据缺省型(missing value):有些统计资料是不完整的,当一个元素或值在统计的时候是“不可得到(not available)”或“缺失值(missing value)”的时候,相关位置可能会被保留并赋予一个特定的NA(not available)值,任何NA的运算结果都是NA。辨别和转换数据对象类型的函数:辨别 转换character is.character() as,character()complexdoubleintegerlogicalNAnumeric2.3 数据对象构造R语言里的数据对象主要有六种构造:向量(vector)、矩阵(matrix)、数组(array)、列表(list)、数据框(data frames)、因子(factor)2.3.1 向量(vector)是由有相同基本类型元素组成的序列,相当于一维数组 5个数值组成的向量x,这是一个用函数c()完成的赋值语句,这里c()可以有任意多个参数,而它输出的值则是一个把这些参数首尾相连形成的一个向量R的赋值符号除了“<-”外,还有"->""="例如:>c(1,3,5,7,9) ->y >y [1] 2 5 8 3 >z = c(1,3,5,7,9) >z [1] 1 3 5 7 9 assign()函数对向量进行赋值 length():可返回向量的长度 mode()可返回向量的数据类型 正则序列 用 “:”符号,可产生有规律的正则序列(: 的运算级别最高) 函数seq()产生有规律的各种序列seq(from,to ,by) from 给序列的起始值,to表示序列的终止值,by表示步长(by 省略时,表示步长值为1)>seq(1,10,2) [1] 1 3 5 7 9 >seq(1,10) [1] 1 2 3 4 5 6 7 8 9 10 有时关注的是数列的长度,利用句法:seq(下界,by=,length=)>seq(1,by=2,length=10) [1] 1 3 5 7 9 11 13 15 17 19 rep(x,times,……)x表示要重复的对象,times表示重复的次数>rep(c(1,3),4) [1] 1 3 1 3 1 3 1 3 >rep(c(1,3),each=4) [1] 1 1 1 1 3 3 3 3 对每个元素进行重复R中的内置函数:mean()来示向量的均值median()求是位数var()求方差sd()求标准差sort()对向量排序rev()将向量按原方向的反方向排列rank()给求出向量的秩prod()求向量连乘积append()为向量添加元素对向量运算常见函数表 函数 用途sum() 求和max() 求最大值min() 求最小值range() 求极差(全矩)mean() 求均值median 求中位数var() 求方差sd() 求标准差sort() 排序rev() 反排序rank() 求秩append() 添加replace() 替换match() 匹配pmatch() 部分匹配all() 判断所有any() 判断部分prod() 积 2.3.2 矩阵矩阵(matrix)是将数据用行和列排列的长方形表格,它是二维的数组,其单元必须是相同的数据类型,通常用列来表示不同的变量,用行表示各个对象。其句法是:matrix(data=NA,ncol=1,byrow-=FALSE,dimnames=NULL)data是必须的,其它几个选择参数。nrow表示矩阵的行数ncol表示矩阵的列数byrow默认为FALSE,表示矩阵按列排列,如设置为T,表示按行排列;dimnames可更改矩阵行列名字diag()函数生成对角矩阵diag()这个函数比较特别,当数据是向量时则生成对角矩阵,但当数据是矩阵时,则返回对角元素也可用函数diag()生成单位矩阵 当我们生成了某个矩阵后,若要访问矩阵的某个元素或某行(列),可以利用形如A[i,j]的形式得到相应的索引矩阵矩阵可进行相应的加减乘除运算,但运算过程中要注意行数和列数的限制条件R里A*B并不是表示矩阵相乘,只表示矩阵对应的元素相乘矩阵相乘应用A%*%Bdim()返回矩阵的行数和列数nrow()返回矩阵的行数ncol()返回矩阵的列数solve()返回矩阵的逆矩阵对矩阵运算的常见函数 函数 用途as.matrix() 把非矩阵的转换成矩阵is.matrix() 辨别是否矩阵diag() 返回对角元素或生成对角矩阵eigen() 求特征值和特征向量solve() 求逆矩阵chol() Choleski分解svd() 奇异值分解qr() QR分解det() 求行列式dim() 返回行列数t() 矩阵转置apply() 对矩阵应用函数R语言还提供了专门针对矩阵的行或列计算的函数如 colSUms()对矩阵各列求和colMeans()求矩阵各列的均值类似的有 rowSums()rowMeans()更一般的方法:apply()函数来对各行各列进行运算句法是:apply(X,MARGIN,FUN,……)X表示要处理的数据MARGIN表示函数作用的范围取1表示对行运用函数取2表示对列运用函数FUN表示要运用的函数rbind()、cbind()将两个或两个以上的矩阵合并起来rbind()表示按行合并,cbind()则表示按列合并2.3.3 数组数组(array)可以看作是带有多个下标的类型相同的元素的集合。数组的生成函数是array(),其句法是array(data=NA,dim=length(data),dimnames-NULL)data表示数据,可以为空dim 表示维数dimnames可以更改数组难度的名称2.3.4 列表向量、矩阵和的单元必须是同一类型的数据,若一个数据对象需要含有不同的数据类型,可采用列表(list)这种数据对象的形式。列表是一个对象的有序集合构成的对象,列表中包含的对象又称为它的分量(components),分量可以是不同的模式或(和)类型语法式为:list (变量1=分量1,变量2=分量2,……)若要访问列表的某一成分,可以用LST[[1]],LST[[2]]的形式访问因分量可以被命名,故可以在列表名称后加$符号,再写上成分名称来访问列表分量函数length()、mode()、names()可以分别返回列表的长度(分量的数目)、数据类型、列表里成分的名字2.3.5 数据框数据框(data frame)是一种矩阵形式的数据,但数据框中各列可以是不同类型的数据。数据框每列是一个变量,每行是一个观测 。对可能列入数据框中的列表有如下的一些限制:1.分量必须是向量(数值,字符,逻辑),因子,数值矩阵,列表或者其他数据框。2.矩阵,列表和数据框为新的数据框提供了尽可能多的变量,因为它们各自拥有列、元素或者变量。3.数值向量、逻辑值、因子保持原有格式,而字符向量会被强制转换成因子并且它的水平就是向量中出现的独立值。4.在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数。R中用函数data.frame()生成数据框,其句法是:data.frame(data1,data2,……)数据框的列名默认为变量名,也可对列名进行重新命名也可以对数据框的行名进行修改2.3.6 因子和有序因子分类型数据经常要把数据分成不同的水平或因子(factor)生成因子的命令是factor(),其句法是:factor(data,levels,labels,……)其中data表示数据levels是因子水平向量labels是因子的标签向量levels,labels是备选项,可以不选若上面的每个因子并不表示因子的大小,要表达因子之间有大小顺序(考虑因子之间的顺序),则可以用 ordered()函数产生2.4 数据的录入及编辑c函数:c函数是把各个值联成一个向量或列表,可以形成数值型向量、字符型向量或其它类型向量 scan函数:功能类似于c函数,实际上是一种键盘输入数据函数。当输入scan(),然后按回车键,这时将等待输入数据,数据之间只要空格分开即可(c函数要用逗号分开)。输入完数据,再按回车键,这时数据录入完毕。scan函数还可以读入外部文本文件,若现有一个文本文件,data.txt,读入这个文件的命令是:>x=scan(file="dat.txt")若原文件的数据之间有逗号等分隔符,用scan读入应该去掉这些分隔符,其命令是:>x=scan(file="dat.txt",sep=",") 编辑数据data.entry命令xx原先未被定义,现在赋予其一个空值,这时会出现一个电子表格界面,等待输入数据:>data.entry(xx=c(NA)) 当电子表格关闭后,数据会自动保存edit命令用来编辑函数,也可用来编辑数据,但不会自动保存fix函数与edit类似,但它可以自动保存从外部文件读入数据从文本文件读取:>s1=read.table("student.txt") >s1 V1V2V3 1class sexscore 2 1 女80 3 1 男85 4 2 男92 5 2 女76 6 3 女61 7 3 女95 8 3 男83 读入表格数据的命令是:read.table 忽略掉标签而直接使用默认的行标签>s2=read.table("student.txt",header=T)>s2 class sexscore 1 1 女80 2 1 男85 3 2 男92 4 2 女76 5 3 女61 6 3 女95 7 3 男83 从网络读入数据url可以从网页上读入正确格式的数据,要借助read.table函数> address=http://www.the-data-mine.com/bin/view/Misc/WebHome/sample.txt>read.table(file=url(address)) 读入其他格式的数据库要读入其他格式的数据库,必须先安装"foreign"模块,它不属于R的8个内置模块,需在使用前安装。 library(foreign) SAS:R只能诗篇SAS Transport format(XPORT)文件,需要把普通的SAS数据文件(.ssd和.sas7bdat)转换成Transport format(XPORT)文件,再用命令:read.xport()SPSS数据库:read.spss()可读入SPSS数据文件Epi info数据库:要给数据集一个名字,则是read.epiinfo("文件名.rec")->名称Stata数据库:R可读入Stata5,6,7的数据库读入数据文件后,使用数据集名$变量名,即可使用各个变量 >read.dta(“文件名.dta”) 读入数据文件后,使用数据集名$变量名,即可使用各个变量。>mean(data$age) 便是计算数据集 data中的变量age的均数。2.5 函数、循环与条件表达式2.5.1 编写函数句法是:函数名 = function (参数1,参数2…) { 函数体 函数返回值} 对于这类只有一个算术式的简单函数,也要不要{}>mean(data$age) 便是计算数据集 data中的变量age的均数。 若不使用圆括号,直接输入函数名,按回车键将显示函数的定义式:单参数:使函数个性化,可使用单参数,函数将会根据参数的不同,返回值不同> welcome.sb = function(names) print(paste("welcome",names,"to use R")) >welcome.sb("Mr fang") [1] "welcome Mr fang to use R" >welcome.sb("Mr Wang") [1] "welcome Mr Wang to use R" 默认参数:即不输入任何参数函数的默认参数> welcome.sb=function(names="Mr fang")print(paste("welcome", names,"to use R")) >welcome.sb() [1] "welcome Mr fang to use R" 当函数体的表达式超过一个时,要用{}封起来2.5.2 for循环for循环的句法是:for (变量 in取值向量) { 表达式… }

R语言中的几种数据结构

一 R中对象的5种基本类型

字符(character)

整数 (integer)

复数(complex)

逻辑(logical:True/False)

数值(numeric:real numbers)

查看对象类型的命令:class(x)

二 R语言中有如下几种数据结构:

向量 vector() 组内元素必须类型一致,否则将会被强制转换。

(1) 创建向量的三种方式:

<span style="font-size:18px">x <- vector("numeric", length = 10)

x <- 1:4

x <- c("a",12,TRUE)</span>

(2) 强制转换的几个函数:

as.numeric(x) / as.character(x) / as.logical(x)

矩阵 matrix()一列一列的填充元素

按行合并:rbind()按列合并:cbind()

数组 array() 可以有多个维度

列表 list() 可以包含不同类型的元素

因子 factor()

(1) 分类数据/有序 vs. 无序

(2) 整数向量+标签(label)(优于整数向量)

Male/Female vs. 1/2

常用于lm(),glm()

(3) levels设置基线水平

table() 查看因子信息unclass() 去除因子属性日期

x <- Sys.Date() 得到系统当前日期

julian(x) x距离1970-01-01的天数

时间 POSIXct / POSIXlt

POSIXct:整数,常用于存入数据框 as.POSIXct()

POSIXlt:列表,还包含星期、年月日等信息。as.POSIXlt()

strptime(x, format = "...") 将一般格式转化为时间格式