r语言表示或者用什么符号?

Python011

r语言表示或者用什么符号?,第1张

R是一款统计计算编程语言,你可以在通用公共许可(GPL)规则下从互联网获取它。也就是说,你可以免费获取它、发布它,甚至拿它来卖钱,只要获取者与你有相同的权利,并且可以免费获得源代码。R可以在微软公司的Windows XP以及之后的版本中使用,在UNIX,Linux以及苹果公司的Macintosh OS X系统中也可以使用。

R提供了统计计算以及绘图的环境。事实上,R是一款完整的编程语言,尽管这一点在本书中鲜有提及。本书中,我们主要学习一些基本的概念,并且研究一些有指导性的例子。

R可以在某个统计计算结果的基础上再进行扩展计算。此外,R的数据可视化系统既允许我们使用诸如plot(x,y)这样的简单命令来进行绘图,也提供了对图形输出更好的控制。正因为R是一款编程语言,所以R非常灵活。其他一些统计软件,提供了更好的交互以及菜单表格类的选项接口,但是通常这样用户友好的界面反而会限制使用者进一步探索。尽管一些基本的统计只需要一些固定的计算过程,但是对于一个稍微复杂的数据进行建模,就需要一些特别设定的计算,而R的灵活性在这时就会成为显著的优势。

R之所以被称为“R”,其实是一个互联网式的幽默。也许你知道C语言(C语言之所以被称为C也是有一段故事的)。受到这种命名方式的启发,Bechker和Chambers在20世纪80年代早期为他们新发明的语言起名为S。这种语言后来被发展成一个商用的版本S-PLUS,并被全世界各地的统计学家广为使用。新西兰奥克兰大学的Ross Ihaka和Robert Gentleman为了教学目的,写了一个S的简化版。这两位先生的名字都以R开头,好吧,还有什么理由拒绝以R作为这个语言的名字呢?

在1995年,Martin Maechler劝说Ross和Robert在GPL规则下公开他们R语言的源代码。这与当时风行一时的Linux系统开源运动不谋而合。R很快给那些需要在Linux上进行统计计算的人带去了福音。很快,交流故障与讨论R发展的邮件列表就被建立起来。

初始步骤

开始运行R是很简单的,但方法取决于你的操作平台。你可以从系统菜单启动,双击图标或在系统命令行中输入命令"R"。这将产生一个控制台窗口,或在当前终端窗口启动一个交互式程序。在这两种情形下,R都通过问答模式工作,即你输入命令行并按下Enter键,然后程序运行,输出相关结果,继续要求更多的输入。当R在准备输入状态时,它显示的提示符是一个">"符号。R也可以作为纯文本应用程序或批处理模式来应用,但针对本章的目的,我将假设你处于一个图形工作站上。

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取值向量) { 表达式… }

vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框

c:连接为向量或列表 sequence:等差序列 rep:重复

length:求长度 subset:求子集 seq,from:to, NA:缺失值 NULL:空对象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:对象属性

mode,typeof:对象存储模式与类型 names:对象的名字属性

character:字符型向量 nchar:字符数 substr:取子串 format,formatC:把对象用格式转换为字符串 paste,strsplit:连接或拆分

charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换

complex,Re,Im,Mod,Arg,Conj:复数函数

factor:因子 codes:因子的编码 levels:因子的各水平的名字 nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子

table:交叉频数表 split:按因子分组 aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数

+, -, *, /, ^, %%, %/%:四则运算 ceiling,floor,round,signif,trunc,zapsmall:舍入 max,min,pmax,pmin:最大最小值

range:最大值和最小值 sum,prod:向量元素和,积 cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx fun:插值 diff:差分 sign:符号函数

abs,sqrt:绝对值,平方根 log, exp, log10, log2:对数与指数函数 sin,cos,tan,asin,acos,atan,atan2:三角函数

sinh,cosh,tanh,asinh,acosh,atanh:双曲函数

beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数

fft,mvfft,convolve:富利叶变换及卷积 polyroot:多项式求根 poly:正交多项式 spline,splinefun:样条差值

besselI,besselK,besselJ,besselY,gammaCody:Bessel函数 deriv:简单表达式的符号微分或算法微分

array:建立数组 matrix:生成矩阵 data.matrix:把数据框转换为数值型矩阵 lower.tri:矩阵的下三角部分 mat.or.vec:生成矩阵或向量 t:矩阵转置

cbind:把列合并为矩阵 rbind:把行合并为矩阵 diag:矩阵对角元素向量或生成对角矩阵 aperm:数组转置 nrow, ncol:计算数组的行数和列数 dim:对象的维向量

dimnames:对象的维名 row/colnames:行名或列名 %*%:矩阵乘法 crossprod:矩阵交叉乘积(内积) outer:数组外积 kronecker:数组的Kronecker积

apply:对数组的某些维应用函数 tapply:对“不规则”数组应用函数 sweep:计算数组的概括统计量 aggregate:计算数据子集的概括统计量 scale:矩阵标准化

matplot:对矩阵各列绘图 cor:相关阵或协差阵 Contrast:对照矩阵 row:矩阵的行下标集 col:求列下标集

solve:解线性方程组或求逆 eigen:矩阵的特征值分解 svd:矩阵的奇异值分解 backsolve:解上三角或下三角方程组 chol:Choleski分解

qr:矩阵的QR分解 chol2inv:由Choleski分解求逆

<,>,<=,>=,==,!=:比较运算符 !,&,&&,|,||,xor():逻辑运算符 logical:生成逻辑向量 all,any:逻辑向量都为真或存在真

ifelse():二者择一 match,%in%:查找 unique:找出互不相同的元素 which:找到真值下标集合 duplicated:找到重复元素

optimize,uniroot,polyroot:一维优化与求根

if,else,ifelse,switch:分支 for,while,repeat,break,next:循环 apply,lapply,sapply,tapply,sweep:替代循环的函数。

function:函数定义 source:调用文件 call:函数调用 .C,.Fortran:调用C或者Fortran子程序的动态链接库。 Recall:递归调用

browser,debug,trace,traceback:程序调试 options:指定系统参数 missing:判断虚参是否有对应实参 nargs:参数个数 stop:终止函数执行

on.exit:指定退出时执行 eval,expression:表达式计算 system.time:表达式计算计时 invisible:使变量不显示 menu:选择菜单(字符列表菜单)

其它与函数有关的还有:delay,delete.response,deparse,do.call,dput,environment ,,formals,format.info,interactive,

is.finite,is.function,is.language,is.recursive ,match.arg,match.call,match.fun,model.extract,name,parse,substitute,sys.parent ,warning,machine

cat,print:显示对象 sink:输出转向到指定文件 dump,save,dput,write:输出对象 scan,read.table,load,dget:读入

ls,objects:显示对象列表 rm, remove:删除对象 q,quit:退出系统 .First,.Last:初始运行函数与退出运行函数。

options:系统选项 ?,help,help.start,apropos:帮助功能 data:列出数据集分析

每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数函数,r――随机数函数。

比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下面我们列出各分布后缀,前面加前缀d、p、q或r就构成函数名:

norm:正态,t:t分布,f:F分布,chisq:卡方(包括非中心) unif:均匀,exp:指数,weibull:威布尔,gamma:伽玛,beta:贝塔

lnorm:对数正态,logis:逻辑分布,cauchy:柯西, binom:二项分布,geom:几何分布,hyper:超几何,nbinom:负二项,pois:泊松 signrank:符号秩,

wilcox:秩和,tukey:学生化极差

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

R中已实现的有chisq.test,prop.test,t.test。

cor,cov.wt,var:协方差阵及相关阵计算 biplot,biplot.princomp:多元数据biplot图 cancor:典则相关 princomp:主成分分析 hclust:谱系聚类

kmeans:k-均值聚类 cmdscale:经典多维标度 其它有dist,mahalanobis,cov.rob。

ts:时间序列对象 diff:计算差分 time:时间序列的采样时间 window:时间窗

lm,glm,aov:线性模型、广义线性模型、方差