哪一款手机比较薄 五款时下最薄的智能手机推荐

SQL Server 2016将包含R语言的大数据算法【附下载链接】
SQL Server 2016将包含R语言的大数据算法【附下载链接】
SQL Server 2016最近,这个版本可以连接R语言及Revolution R Enterprise的大数据算法。
SQL Server 2016有两种方式来调用R。第一种方式,在SQL存储过程中嵌入R代码,应用程序会调用这个存储过程,将R生成的图形和表格嵌入到程序中。
第二种方式,Revolution R Enterprise现在已包含在SQL Server 2016中,被称为SQL Server R Services ,用户可以用其中的RevoScaleR包创建统计模型,直接使用SQL Server 2016中的数据,并利用数据库的计算能力来拟合模型。在R中的过程如下:
连接到SQL Server 2016数据库(使用登陆凭证)
在SQL Server 2016中通过引用一个表或查询来创建一个对象
在数据库中使用RRE执行计算(在SQL Server2016中设置“coupute context”)
使用RevoScaleR包中的“rx”函数来拟合函数(类似于标准的R语言函数语法)
利用数据库中著名的"airlines"数据集数据,这里的一些代码演示了如何利用这些数据来拟合一个线性回归模型(更多背景资料请看的博客)
# 定义SQL Server 连接字符串
con &- sprintf("Driver=SQL S Server=%s;Database=%s;uid=%s;Pwd=%s",
sqlHost, sqlDatabase, sqlUser, sqlPw)
# 定义数据对象,包括数据库中表的位置
airData &- RxSqlServerData(
connectionString = con,
table = "AirlineDemoSmall",
colInfo = list(ArrDelay = list(type = "integer"),
DayofWeek = list(type = "factor", levels = day.names)
# 定义计算环境
rxSetComputeContext(
RxInSqlServer(connectionString = con,
autoCleanup = FALSE,
consoleOutput = TRUE
# 在数据库中执行分析
model.rxLinMod &- rxLinMod(ArrDelay ~ CRSDepTime + Dayofweek - 1, airData)
summary(model.rxLinMod)
更多SQL Server 2016的新特性以及如何访问社区技术预览版请点击下面的链接:
SQL Server blog:
这周在美国西雅图举办的上,微软的Jason Wilcox和Gopi Kumar演示了SQL Server 2016应用程序中嵌入R代码,来预测赶飞机的时候应该什么时间出发,综合考虑交通状况、值机时间、航班提前出发以及延误等变量。请看这段演示的视频:
底层的预测模型是用运行于SQL Server 2016里的Microsoft R Services模块的RevoScaleR来创建的。时间的预测及app上展示的直方图是在SQL里实时调用R产生的。
官方下载链接:
文件大小:3.04G
文件大小:2.32G
百度网盘镜像:
本文由编译自,原作者David Smith. 转载请注明本文链接
17335次阅读
12262次阅读
10593次阅读
7344次阅读
7248次阅读
5925次阅读
2845名学员
1501名学员
1288名学员
1060名学员
微信扫一扫
服务时间: 9:30 - 18:30
contact@xueqing.tv
雪晴数据网是以数据科学为主题的在线社区,包含在线学习、问答等模块。
官方QQ群:
关注微信订阅号
&&& Copyright & 2017 绘辰科技(北京)有限公司
还没雪晴数据网账号?
邮箱地址 *
获取验证码
确认密码 *
获取验证码
确认密码 *用R语言进行数据分析:常用函数参考
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
作者 红领巾 ]
一、数据管理
vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 length:求长度 subset:求子集 seq,from:to,sequence:等差序列 rep:重复 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,,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:线性模型、广义线性模型、方差分析
除非注明来源,本站文章均为原创或编译,转载请注明出处并保留链接。数据分析网 用R语言进行数据分析:常用函数参考
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
CodeSecTeam微信公众号
优秀是一种习惯!
手机客户端R语言之数据输入与输出_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
R语言之数据输入与输出
|0|0|文档简介
调查分析师中级|
总评分1.0|
浏览量2788
&&R语言之数据输入与输出
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。新手教程:如何学习R语言【生物信息学吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,528贴子:
新手教程:如何学习R语言收藏
其实相对于常见的编程语言,R语言还是非常容易上手,并不需要很多年的编程经验。而且可以在数据分析领域大展身手。
针对生物信息分析的热点转录组分析,提供软件一体化自助分析解决方案;现场专家指导,结合经典案例分析,即学即用,零基础进阶!
前言我当初学习R的时候在网上搜到一则流传很广的R语言学习路线图(R语言学习由浅入深路线图),我在微信圈,微信公众平台上也见多次,写的确实很详细。但是对一些没有编程经验的童鞋来说,学习的难度还是太大了。后来自己浏览了很多R语言书籍,尝试了一些门槛比较低的书籍。自此,R语言学习才走上正轨。以下涉及内容包括R语言书籍的推荐,以及R语言相关课程的推荐,学完这个教程的内容之后足以应付工作学习中遇到的统计分析的问题了。
经典书籍推荐R语言有两类书籍比较“坑”,一类是Programming类,一般都带programing字眼,但不绝对。这类书籍一般是计算机背景的人写的,关注的重点是编程(鞋代码和编程不是一码事),底层的运行机制之类的,比较难以捉摸,典型的例子是《The art of R programming》。还有一类是讲统计知识比较多,而且喜欢推公式。虽然有所裨益,但是会分散很多学习R的精力,可以作为后期提高的书籍,但是作为入门不太合适,像《The R book》。
讲完了“不好的”R的学习资料,可以规避一些“误入歧途”的风险。下面介绍一下我觉得比价有用的学习资料。学习任何语言的捷径就是Learn by dirty。这里推荐一个网站,code school的Try R 课程,非常基础,从最基本的语句的赋值到最后的数据框的基本操作,手把手一步一步的教你,然后对你输入的语句,网页会给出判断,如果写错了,还有很详细的解释。网页全部是英文的,英语过了四级的童鞋应该可以应付了。
R的入门书籍,比较好的是Learning R , 中文名是《学习 R》。第一章到第五章的数据的基本入门,必须要细看的,而且要读好几遍的,这是R的最基本的东西,需熟练掌握,多家练习。别觉得看懂就行了,只有自己敲出来运行正确才行。第六章环境和函数这一章建议直接跳过,比较抽象,等回头R学的差不多了,再回头看比较好。大多数人,平时基本不涉及到这一样的内容。第七章 字符串和因子也是很重要的一章,特别是医学领域。第八、九章的循环,量力而行。第八章的内容其实大多数其他编程语言都会涉及。但是在R里面,这些显循环,用的较少。其实主要还是向量化的操作为主,也称隐循环。第九章的隐循环非常有用,是R最精华的东西,就是学习起来有点困难。其主要内容是 apply族函数,包括lapply, sapply, tapply, apply, mapply等。这本书最优秀的地方在于数据的subset部分,各种方法讲的非常详细,也有很多的例子。这也是R语言比较难入门的地方。
《R in Action》 确实一本非常优秀的书籍,我看喝多大神都推荐这么书,我大概学了一遍,确实非常不错。这本书非常好的地方在于围绕具体的问题展开,教你如何利用R进行操作,而且选取的例子也非常具有代表性,所以建议每个例子都要详细研究。但是这本书学习曲线比较陡峭,可能上一章的内容还没有消化,又要开始新的内容了。遇到问题时建议多点耐心,谷歌或者请教别人,把这些知识点掌握了,这是R的基础。还有一本书,《R cookbook》,这本书是围绕具体的问题进行设置的。所以可以作为一个遇到困难时候的快速翻阅手册,里面特别有用的章节是如何运用apply组函数,上面两本书都讲得不是很详细。
R绘制统计图的功能非常强悍你见过的没见过,想到的,没想到的,都可以绘制出来哦。哈哈,心动不如行动,几行代码一敲,令人心神荡漾的图片就出来啦。R绘图非常简单的,就是一个简单的学习记忆的过程。R语言绘图发展的非常快现在有三大绘图系统,基础绘图系统,Lattice绘图系统,ggplot2绘图系统。虽然各有其使用价值,但个人推荐ggplot2绘图系统以及基础绘图系统。 Lattice对于多分组的数据的展现比较好,但是ggplot2是可以很大程度上替代其功能,不学习也可以,非要用的时候依葫芦画瓢就可以了。
下面主要介绍R的基础绘图系统和ggplot2绘图系统的学习路线。R基础绘图系统《R in Action》中,花了很大的篇幅介绍了基础绘图系统,如果学习完了,工作中碰到的很多统计图就可以胜任了。如果你喜欢钻研,可以看看谢益辉(Knitr包的作者)的《现代统计图形》,讲的非常详细和透彻。不仅如此,更是讲解了图形的选择,图形的设计方面的知识。学有余力,不妨学习一下ggplot2绘图系统, 推荐《R graphics cookbook》一书。书中不仅有ggplot2的绘图代码而且还将其与基础绘图系统进行了比较。介绍的图形非常实用,而且ggplot2的扩展性非常强,可以发挥你的想象力,创造一些新奇的图形。
R语言学习网络课程推荐:1. Datacamp,learn by coding类型的网站,课程设置非常用心,难度合适,内容丰富,最好的R语言学习网站之一。2. 国内的视频课程国内的R语言网络课程最丰富的应该是炼数成金(dataguru)平台,课程包括《R语言数据分析、展现与实例》,《R七种武器之交互化展示包shiny》,《R七种武器之文本挖掘包tm》,《R七种武器之数据可视化包ggplot2》、《R七种武器之数据加工厂plyr》、《R七种武器之金融数据分析quantmod》、《R七种武器之网络爬虫RCurl(第四期)》等。其中比较适合入门的课程是《R语言数据分析、展现与实例》3. MOOC课程Coursera John Hopkins 专题课程不错 (已经上完6门课,2门课正在学习中);还有edX上MIT的The Analytic Edge课程也不错。其他答案有详细介绍不赘述了。
4. 强烈推荐Swirl包,你值得拥有。Swirl包开发者毕业后就去了麦肯锡咨询公司了。
生物信息学,亚马逊网上书城,满59元免运费,好书不间断!850多万种中外正版精品图书一网打尽!买生物信息学,就上Z.CN!正版图书,天天低价特惠,让您挚爱阅读!
好帖收藏,谢谢楼主
已收藏,谢谢楼主~
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或[转载]R语言学习笔记&&&%是什么意思
分类:& 08:59&6016人阅读&(1)&&
参考:W.N.
Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on
R: A Programming Environment for Data Analysis
and&Graphics,
前言:关于R
在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system
for&data analysis and visualization which is built
based on S language.)。
R是S语言的一种实现。S语言是由
AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业
软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman 和
Ross Ihaka 及其他志愿人员开发了一个R系统。R的使用与S-PLUS有很多类似之处,两个软件有一定的兼容性。
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输入,可实现分支、循环,用户可自定义功能。
R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的,在那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。
(1) 有效的数据处理和保存机制。
(2) 拥有一整套数组和矩阵的操作运算符。
(3) 一系列连贯而又完整的数据分析中间工具。
(4) 图形统计可以对数据直接进行分析和显示,可用于多种图形设备。
(5) 一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。
(6) R语言是彻底面向对象的统计编程语言。
(7) R语言和其它编程语言、数据库之间有很好的接口。
(8) R语言是自由软件,可以放心大胆地使用,但其功能却不比任何其它同类软件差。
(9) R语言具有丰富的网上资源
& 入门训练
help.start() 开启帮助文档
& & &help(solve)
显示某命令的帮助信息,或者
& & &?solve
&&对于由特殊字符指定的功能,这些参数必须用单引号或双引号括起来,使之成为一个“字符串”,如
& & & help("[[")
&&与某个主题相关的例子通常可以用下面的命令得到
&&example(topic)
& & R对大小写是敏感的;名称不能以数字开始;
基本的命令由表达式或者赋值语句组成。如果一个表达式被作为一条命令给出,它将被求值、打印而表达式的值并不被保存。一个赋值语句同样对表达式求值之后把表达式的值传给一个变量,不过并不会自动的被打印出来;
& & 命令由分号(;)来分隔,或者另起新行;
基本命令可以由花括号(f和g)合并为一组复合表达式;
& & 注释几乎可以被放在任何地方,只要是以井号( #
)开始,到行末结束;
如果一个命令在行莫仍没有结束,R将会给出一个不同的提示符,默认的是‘+’。
命令文件的执行和输出转向到文件
如果命令存储于一个外部文件中,比如工作目录work中的commands.R,他们可以随时在R的任务中被执行
&&source("commands.R")在Windows中Source也可以由File菜单执行。
函数sink,
&&sink("record.lis")
将把所有后续的输出由终端转向一个外部文件,record.lis。命令
&&将把信息重新恢复到终端上。
数据的保持与对象的清除
R所创建、操作的实体是对象。对象可以是变量、数组、字符串、函数以及由这些元素组成的其它结构;
&&objects()
&&用来显示目前存储在R中的对象的名字。而当前存储的所有对象的组合被称为workspace;
清除对象可以使用rm命令:
&&rm(x, y, z,
ink, junk, temp, foo, bar)
所有在一个R任务中被创建的对象都可以在文件中被永久保存,并在其它的R任务中被使用。在每个R任务结束时用户都有机会保存当前有效的所有对象。如果用户这样做的话,对象将被写入当前目录一个名为.RData。当R被再次启动时R会从这个文件中再载入workspace。同时相关的命令记录也被载入。
所以,推荐大家在用R进行不同的分析时分别使用不同的工作目录。
基本数据结构
数值型(numeric)
1,1.2,3.1415926
复数型(complex)
字符型(character)
‘A’/ “hello world!”
逻辑型(logical)
TRUE / FALSE
基本数据对象
向量(vector), 见下节
矩阵(matrix):&
更一般的说数组是向量在多维情况下的一般形式。事实上它们是可以被两个或更多的指标索引的向量,并且以特定的方式被打印出来。
因子(factors)&提供了一种处理分类数据的更简介的方式。
列表(list): &
是向量的一种一般形式,并不需要保证其中的元素都是相同的类型,而且其中的元素经常是向量和列表本身。
数据框(data frame):
是一种与矩阵相似的结构,其中的列可以是不同的数据类型。可以把数据框看作一种数据"矩阵",它的每行是一个观测单位,而且(可能)同时包含数值型和分类的变量。
函数( function):
能够在R的workspace中存储的对象。我们可以通过函数来扩展R的功能。
& 简单操作,数值与向量
向量与赋值
R对命名了的数据结构进行操作。最简单的数据结构是数字向量;如,
& x &- c(10.4, 5.6, 3.1, 6.4, 21.7) &
&c()是创建函数,赋值运算符是'&-',与函数assign()等价
&&assign("x",
c(10.4, 5.6, 3.1, 6.4, 21.7)) &也可以写成:
&&c(10.4, 5.6,
3.1, 6.4, 21.7) -& x
如果一个表达式被当作一个完整的命令,它的值将被打印到终端但不被储存。
单独输入x则会将值打印出来。也可以打印倒数:
& y &- c(x, 0, x) & 也可以将向量作为元素。
操作是按照向量中的元素一个一个进行的。同一个表达式中的向量并不需要具有相同的长度。如果它们的长度不同,表达式的结果是一个与表达式中最长向量有相同长度的向量。表达式中较短的向量会根据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量相匹配。而常数很明显的将被不断重复。如,
& v &- 2*x + y + 1
常用运算有:
+,-,*,/,^(次方);
log, exp, sin, cos, tan,sqrt等;
max和min的作用是选出所给向量中最大的或最小的元素;
range函数的值是一个长度为2的向量,即c(min(x),max(x))
length(x)返回了向量x中元素的个数,也就是x的长度。
sum(x)给出了x中所有元素的总和;
prod(x)给出x中所有元素的乘积;
mean(x)和var(x),分别计算样本均值和样本方差,这两个函数分别相当于sum(x)/length(x),sum((x-mean(x))
^2)/(length(x)
-1)。如果var()的参数是一个n*p的矩阵,那么函数的值是一个p*p的样本协方差矩阵,认为每行是一个p变量的样本向量。
sort(x)返回一个与x具有相同长度的向量,其中的元素按招升序排列。还有其他更灵活的排序功能(参见order()和sort.list())。
pmax和pmin将返回一个与最长的向量长度相等的向量,向量中的元素由参数中所有向量在相应位置的最大值(最小值)组成;
如果要使用复数,需要直接给出一个复数部分。因此sqrt(-17)将会返回NaN(无效数值)和一个警告,而sqrt(-17+0i)将按照复数进行运算。
最简单的方法是用冒号‘:’,冒号具有最高运算优先级。例如1:30就是向量c(1,2,. .
.,29,30)。30:1构造一个递减序列。
利用seq()函数构造序列:有五个参数,from, to, by, length,
to可以不写参数名,seq(2,10)就相当于2:10。
& &by指定步长,默认为1,如seq(-5, 5,
by=.2)即为c(-5.0, -4.8, -4.6, ..., 4.6, 4.8, 5.0)
& &length指定序列长度,如seq(length=51,
from=-5, by=.2),等同于seq(-5, 5, by=.2)
&along=vector只能单独使用,产生一个“1:length(vector)”序列。类似的函数是rep(),这个函数可以用多种复杂的方法来
&复制一个对象。最简单的形式是& s5 &- rep(x, times=5)
TRUE,&FALSE,
和NA(not available),
前两个可以简写为T和F,但T/F并不是系统保留字,可以被用户覆盖,所以最好还是不要简写。
逻辑向量是由条件给出的,如下列语句令temp成为一个与x长度相同,相应位置根据是否与条件相符而由TRUE或FALSE组成的向量:
& temp &- x & 13
逻辑操作符包括&, &=, &,
&=,完全相等==和不等于!=,与或非分别为&, |, !。
在普通运算中,FALSE当做0而TRUE当做1。
available):&一般来讲一个NA的任何操作都将返回NA。
&is.na(x)返回一个与x等长的逻辑向量,并且由相应位置的元素是否是NA来决定这个逻辑向量相应位置的元素是TRUE还是FALSE。
&x==NA是一个与x具有相同长度而其所有元素都是NA的向量。
NaN(Not a Number):&由数值运算产生,如0/0,
&is.na(x)对于NA和NaN值都返回TRUE,
&is.nan(x)只对NaN值返回TRUE。
字符串在输入时可以使用单引号(')或双以号(");
&在打印时用双引号(有时不用引号)。
R使用与C语言风格基本相同的转义符,&所以输入\打印的也是\,
输入" 打印引号", &n: 换行, t: tab, b: 回格。
字符向量可以通过函数c()连接;
paste()可以接受任意个参数,并从它们中逐个取出字符并连成字符串,形成的字符串的个数与参数中最长字符串的长度相同。如果参数中包含数字的话,数字将被强制转化为字符串。在默认情况下,参数中的各字符串是被一个空格分隔的,不过通过参数sep=string
用户可以把它更改为其他字符串,包括空字符串。例如:
& labs &- paste(c("X","Y"), 1:10, sep="")
&使变量labs成为字符变量c("X1", "Y2", "X3", "Y4", "X5",
"Y6", "X7", "Y8", "X9", "Y10")
vector---数据集子集的选择与修改
任何结果为一个向量的表达式都可以通过追加索引向量(index
vector)来选择其中的子集。
1 逻辑的向量。
& y &- x[!is.na(x)] &
&表示将向量x中的非NA元素赋给y;
& (x+1)[(!is.na(x)) & x&0] -& z &
& 表示创建一个对象z,其中的元素由向量x+1中与x中的非缺失值和正数对应的向量组成。
2. 正整数的向量
& x[6] & &是x的第六个元素
& x[1:10] & &
&&选取了x的前10个元素(假设x的长度不小于10)。
& c("x","y")[rep(c(1,2,2,1), times=4)] &
&&产生了一个字符向量,长度为16,由"x", "y", "y",
"x"重复4次而组成。
3. 负整数的向量
& y &- x[-(1:5)] & &
& 表示向量y取向量x前5个元素以外的元素。
4. 字符串的向量
只存在于拥有names属性并由它来区分向量中元素的向量。这种情况下一个由名称组成的子向量起到了和正整数的索引向量相同的效果。
& fruit &- c(5, 10, 1, 20)
& names(fruit) &- c("orange", "banana", "apple",
& lunch &- fruit[c("apple","orange")]
子集的修改
& x[is.na(x)] &- 0 &
&表示将向量x中所以NA元素用0来代替
& y[y & 0] &- -y[y & 0] &
& &表示将向量(-y)中 与向量y的负元素对应位置的元素 赋值给
向量y中 与向量y负元素对应的元素。作用相当于:
& y &- abs(y)
&对象,模式和属性
固有属性:模式和长度
对象是R所进行操作的实体,对象可以是向量、列表等,详见1.6.
对象的模式包括numeri,ccomplex,character,logical,list,function,expression等。可以用mode(object)查看。
对象的长度是对象的另一固有属性。可以用length(object)查看。
attribute(object)可以查看更深入的属性。
模式的转换
在允许的情况下(大多数情况都是允许的),R可以完成各种模式的转换。例如:d&-as.character(z),将数值向量z&-(0:9)转化为字符向量c("0",
"1", "2", ..., "9")。as.integer(d)将d转化为数值向量。
R中很多形式为as.something()的函数,可以完成从一个模式向另一个模式的转化,或者是令对象取得它当前模式不具有的某些属性。
改变对象的长度
& e &-&numeric()&&
&产生一个numeric型的空向量e。character()等类似。此时长度为对象0。
此时新添加一个元素会使e的长度自动调整。
& e[3] &- 17 &
&令e为一个长度为3的向量(此时,该向量的前两个元素都是NA)
缩短(截断)一个对象的长度,只需要一个赋值命令。因此,若alpha是一个长度为10的对象,下面的命令
& alpha &- alpha[2 * 1:5]
属性的获取和设置
函数attributes(object)将给出当前对象所具有的所有非基本属性(长度和模式属于基本属性)的一个列表。
函数attr(object,name)可以被用来选取一个指定的属性。除了为某些特殊的目的创建新属性这样特殊的环境下,这些函数很少被用到。
当函数attr()用在赋值语句左侧时,既可以是将对象与一种新的属性关联,也可以是对原有属性的更改。例如
& attr(z,"dim") &- c(10,10) &
&&另R将z作为一个10X10的矩阵看待。
对象的类别
对象的一个特别属性,类别,被用来指定对象在R编程中的风格。比如:如果对象类别"data.frame"则会以特定方式处理。
unclass()可以去除对象的类别。
summary()可以查看对象的基本信息(min, max, mean, etc.)
&有序因子和无序因子
因子是一种向量对象,它给自己的组件指定了一个离散的分类(分组),它的组件由其他等长的向量组成。R提供了有序因子和无序因子。
通俗点说,因子就是将对象的值分成不同的组(levels)。
用函数factor()创建一个因子,levels按序排列(字母序或数值序)。
例如province&-c("四川","湖南","江苏","四川","四川","四川","湖南","江苏","湖南","江苏"),为province创建因子:
&&pf&-factor(province) &
创建province的因子pf
& pf & & 打印出来
&[1] 四川 湖南 江苏 四川 四川 四川 湖南 江苏 湖南 江苏
Levels: 湖南 江苏 四川
函数levels()可以用来观察因子中有多少不同的levels。
假如我们拥有这些省份考生的分数:
& score&-c(95,86,84,92,84,79,86,99,85,90)
函数tappley()可以用来计算各省的平均分数,函数tapply()的作用是对它第一个参数的组件中所包含的每个组应用一个参数三指定的函数。
& smeans&-tapply(score,pf,mean)
& & 湖南 &
& 江苏 & &
85.00 87.50000&
再例如,下面命令会给出各组的length
& tapply(score,pf,length)
湖南 江苏 四川&
函数ordered()可以创建有序因子
& ordered(province)
&[1] 四川 湖南 江苏 四川 四川 四川 湖南 江苏 湖南 江苏
Levels: 湖南 & 江苏 & 四川
数组和矩阵
数组可以看成一个由递增下标表示的数据项的集合,例如数值。
数组的生成
如果一个向量需要在R中以数组的方式被处理,则必须含有一个维数向量作为它的dim属性。
维度向量由dim()指定,例如,z是一个由1500个元素组成的向量。下面的赋值语句
& dim(z) &- c(3,5,100) & &
&使它具有dim属性,并且将被当作一个3X5X100的数组进行处理。
c(3,5,100)&就是他的维度向量。
还可以用到像matrix()和array()这样的函数来赋值。比如
&&array(1:20, dim=c(4,5))
& matrix(1:24, 3,4)
数据向量中的值被赋给数组中的值时,将遵循与FORTRAN相同的原则"主列顺序",即第一个下标变化的最快,最后的下标变化最慢。
数组的运算
数组可以在算数表达式中使用,结果也是一个数组,这个数组由数据向量逐个元素的运算后组成,通常参与运算的对象应当具有相同的dim属性。
数组的索引和数组的子块
数组中的单个元素可以通过下标来指定,下标由逗号分隔,写在括号内。
我们可以通过在下标的位置给出一个索引向量来指定一个数组的子块,不过如果在任何一个索引位置上给出空的索引向量,则相当于选取了这个下标的全部范围。
如a[2,,],a[,3,]等
除了索引向量,还可以使用索引数组来指定数组的某些元素。
例如:有4X5的数组a,若要得到a中的a[1,3], a[2,2]
和a[3,1]这三个元素,可以生成索引向量i,然后用a[i]得到它们。
&&a &- array(1:20,dim=c(4,5)) # Generate a 4
by 5 array.
& i &- array(c(1:3,3:1),dim=c(3,2))
& a[i] &- 0 & # 将这三个元素用0替换。
向量,数组的混合运算
表达式从左到右被扫描;
参与运算的任意对象如果大小不足,都将被重复使用直到与其他参与运算的对象等长;
当较短的向量和数组在运算中相遇时,所有的数组必须具有相同的dim属性,否则返回一个错误;
如果有任意参与运算的向量比参与运算的矩阵或数组长,将会产生错误;
如果数组结构正常声称,并且没有错误或者强制转换被应用于向量上,那么得到的结果与参与运算的数组具有相同的dim属性。
矩阵的运算
构建分区矩阵:cbind()和rbind(),cbind()按照水平方向,或者说按列的方式将矩阵连接到一起。rbind()按照垂直的方向,或者说按行的方式将矩阵连接到一起。
外积:操作符是%o%:
& ab &- a %o% b &&或者
& ab &-&outer(a, b,
其中的乘法操作可以由任意一个双变量的函数替代。
广义转置:函数t(A),或aperm(A,
获取行数/列数:nrow(A)和ncol(A)分别返回矩阵A的行数和列数。
矩阵乘法:操作符为%*%;
交叉乘积(cross
product):crossprod(X,Y)等同于t(X) %*%
y,crossprod(X)等价于crossprod(X, X);
diag(v):如果v是向量,diag(v)返回一个由v的元素为对角元素的对角矩阵。
&如果v为矩阵,diag(v)返回一个由v主对角元素组成的向量。
&如果v只是一个数值,那么diag(v)是一个vXv的单位矩阵。
特征值和特征向量:eigen(Sm)。这个函数的结果是由名为values和vectors的两部分组成的列表。如果只是需要特征值:eigen(Sm)$values
最小二乘拟合即QR分解:lsfit(), qr()。
强制转换为向量:as.vector(),或者直接c().
解线性方程和求矩阵的逆,奇异值分解与行列式见;
&列表和数据帧
列表是由称作组件的有序对象集合构成的对象。组件的模式或类型不一定相同。
形如Lst &-&list(name_1=object_1,
name_m=object_m)的赋值将创建一个包含m个组件的列表,并根据参数中指定的名称为其命名。(其名称可以自由选取)。如果它们的名称被省略,组件将只是被编号。例如:
&-&list(name="Fred",
wife="Mary", no.children=3,child.ages=c(4,7,9))
所使用的组件是被复制到新的列表中的,对原始对象没有影响。
组件总是被编号的,并且可以通过编号指定。
Lst[[1]]&即为"Fred",也可以用&Lst$name,Lst[["name"]]指定。如果Lst[[4]]是一个有下标的数组,Lst[[4]][1]就是它的第一项。
区分Lst[[1]]和Lst[1],'[[...]]'是选择单个元素时使用的操作符,而'[...]'是一个一般的下标操作符。因此,前者代表列表Lst中的第一个对象;后者是列表Lst的子列表,仅包含列表的第一项。
组件的名称可以缩写,可缩写的程度是只要能令组件被唯一的识别就可以了。如:Lst$na等价于Lst$name,&Lst$w等价于Lst$wife。
扩展列表可以通过指定额外组件的方式。例如
& Lst[5] &- list(matrix=Mat)
当连接函数c()的参数为列表时,其结果也是一个模式为列表的对象。由参数中的列表作为组件依次连接而成。
& list.ABC &- c(list.A, list.B, list.C)
数据帧是类别为"data.frame"的列表;
数据帧会被当作各列具有不同模式和属性的矩阵。
数据帧按照矩阵的方式显示,选取的行或列也按照矩阵的方式来索引。
创建数据帧
直接创建:那些满足对数据帧的列(组件)限制的对象可以通过函数data.frame来构建成为一个数据帧
& t &- data.frame(home=statef, loot=income,
shot=incomef)
强制转换:如果一个列表的组件与数据帧的限制一致,这个列表就可以通过函数as.data.frame()强制转化为一个数据帧。
外部文件:创建数据帧最简单的方法应当是使用read.table()函数从外部文件中读取整个数据帧。
数据帧和列表的限制
1 组件必须是向量(数值型,字符形,逻辑型),因子,数值矩阵,列表,或其他数据帧;
2 矩阵,列表,数据帧向新数据帧提供的变量数分别等于它们的列数,元素数和变量数;
3 数值向量,逻辑值和因子在数据帧中保持不变,字符向量将被强制转化为因子,其水平是字符向量中所出现的值;
4 数据帧中作为变量的向量结构必须具有相同的长度,而矩阵结构应当具有相同的行大小。
挂接和卸载数据帧
当觉得使用'$'引用数据帧元素(如't$home')麻烦时,可以进行数据帧挂接
&&attach(t)&&
&这样可以直接引用数据帧内的元素,而无需'$',前提是数据帧外没有同名的变量(如name)。
挂接后若要对数据帧元素进行赋值操作,仍需用'$',否则视为赋值给数据帧外的元素。
赋值后必须要先卸载(detach)再重新挂接后,新值才可见。
&&detach(t)
attach()是具有一般性的函数,即它不仅能够将目录和数据帧挂接在搜索路径上,还能挂接其他类别的对象。特别是模式为"list"的对象可以通过相同的方式挂接:
& attach(any.old.list) &
任何被挂接的对象都可以用detach来卸载,通过指定位置编号或者指定名称这样的方式.
函数search()将显示目前的搜索路径,可以用来查看数据帧/列表的挂接状态。
ls()(或objects())命令可以用来检查搜索路径任意位置上的内容。如:ls(),
ls(2), ls(t)
R可以在搜索路径中包含至多20个项目,列表和数据帧只能在位置2或更靠后的位置上挂接。
数据帧使用惯例
1 将每个独立的,适当定义的问题所包含的所有变量收入同一个数据帧中,并赋予合适的、易理解、易辨识的名称;
2 处理问题时,当相应的数据帧挂接于位置2,同时在第1层工作目录下存放操作的数值和临时变量;
3 在结束一次工作之前,将你认为对将来有参考价值的变量通过$标记的形式添加到数据帧里面,然后detach();
4 最后,将工作目录下所有不需要的变量剔除,并且尽量将剩下多余的临时变量都清除干净。
这样我们可以很简单的在同一个目录下处理多个问题,而且对每个问题都可以使用x,y,z这样的变量名。
&从文件中读取数据
函数read.table()
该函数可以直接将文件中完整的数据帧读入。此时文件要符合特定的格式:
1 第一行应当提供数据帧中每个变量的名称;
2 每一行(除变量名称行)应包含一个行标号和各变量的值。
3 若没有表头(变量名称行),也没有行标号,只有变量值,则默认变量名称为"v1","v2"...
4 若有表头,但没有行标号,则可以指定参数header=TRUE.
函数scan()
该函数从键盘或文件中读取数据,并存入向量或列表中。
& inp &-&scan(file,
第一个参数是文件名,如“test.txt”,若为“”或空,则从键盘读入数据;
第二个参数用于确定读入数据的模式。
&如:list("",0,0)&指定读入到列表中,列表有三项,且列表第一项是字符型,第二三项是数值型。若为0,则指定读入到一个数值向量中,若为“”则指定读入到字符向量中。
内置数据集的读取
R本身提供超过50个数据集,同时在功能包(包括标准功能包)中附带更多的数据集。与S-Plus不同,这些数据即必须通过data函数载入。
&&data() &
#获得基本系统提供的数据集列表,然后通过形如
&&data(infert) &
&#来载入名为infert的数据集
从其他package中载入数据集data(package="nls") &
& &#查看nls中数据集
data(Puromycin, package="nls") &
& #读取nls中Puromycin数据集。
用library()挂接package后,它的数据集也自动包含到搜索路径中了。
library(nls) & &#载入package
data() & &
&#查看数据集
date(Puromycin) &
&#载入Puromycin数据集
在使用一个数据帧或矩阵时,edit提供一个独立的工作表式编辑环境。
& xnew &- edit(xold) & &
& #对数据集xold进行编辑。并在完成时将改动后的对象赋值给xnew
& xnew &- edit(data.frame()) &
&#可以通过工作表界面录入新数据。
fix()函数用于直接修改已有的对象,等价于
&x&-edit(x).
R是一个统计表集合(略读)
R提供了一套完整的统计表集合。函数可以对累积分布函数P(X&=x),概率密度函数,分位函数(对给定的q,求满足P(X&=x)
& q的最小x)求值,并根据分布进行模拟。
<img STYLE="BorDer-riGHT: BorDer-Top: BorDer-LeFT: BorDer-BoTToM: max-width: 100%" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://img.my.csdn.net/uploads//_1001.png"
TITLE="[转载]R语言学习笔记&&&%是什么意思" />
对于所给的名称,加前缀'd'代表密度(density),'p'代表CDF,'q'代表分位函数,'r'代表模拟(随即散布)。这几类函数的第一个参数是有规律的,形为dxxx的函数为x,pxxx的函数为q,qxxx的函数为p,rxxx的函数为n(rhyper和rwilcox是特例,他们的第一个参数为nn)。目前为止,非中心参数(non-centrality
parameter)仅对CDF和少数几个其他函数有效,细节请参考在线帮助。
所有pxxx和qxxx的函数都具有逻辑参数lower.tail和log.p,而所有的dxxx函数都有参数log,这个是我们可以直接通过
- pxxx(t, ..., lower.tail = FALSE, log.p = TRUE)
获取,比如说,累积失效函数(cumulative/integrated hazard function),H(t)
=-log(1-F(t)),以及更精确的对数似然(通过dxxx(..., log = TRUE))。
此外,对于来自正态分布,具有学生化样本区间的分布还有ptukey和qtukey这样的函数。下面是一些例子
& ## 2-tailed p-value for t distribution
& 2*pt(-2.43, df = 13)
& ## upper 1% point for an F(2, 7) distribution
& qf(0.99, 2, 7)
检测数据集的分布
函数summary和fivenum这两个函数可以给出摘要,后者只给出数值;
函数stem可以将数值统计结果以类似直方图的方式显示出来;
函数hist()可以绘制直方图;
函数density和line可以获得更漂亮的密度图;
功能包fun中的ecdf函数能绘制经验累积分布函数;
还可以进行拟合正态分布,覆盖拟合CDF;
还可以绘制Quantile-quantile&(Q-Q)图有助于我们更细致的检测其分布形态;
8.3 单样本和两样本检验(略读)
&语句组、循环和条件操作
R是一种表达式语言,也就是说其命令类型只有函数或表达式,并由它们返回一个结果。
语句组由花括号‘{ }’确定,此时结果是该组中最后一个能返回值的语句的结果。
(expr_1) expr_2 else
其中条件表达式expr1必须返回一个逻辑值,操作符&&和||经常被用于条件部分。
&和|与&&,||的区别在于,&和|按照逐个元素的方式进行计算,&&和||对向量的第一个元素进行运算,只有在必需的时候才对第二个参数求值。
if/else结构的向量版本是函数ifelse,其形式为ifelse
(condition,a,b),产生函数结果的规则是:如果condition[i]为真,对应a[i]元素;反之对应的是b[i]元素。根据这个原则函数返回一个由a,b中相应元素组成的向量,向量长度与其最长的参数等长。
&&for (name in
expr_2其中name是循环变量,expr1是一个向量表达式(通常是1:20这样的序列),而expr2经常是一个表达式语句组,expr2随着name依次取expr1结果向量的值而被多次重复运行。
&&repeat(expr)
&&while(condition)
break语句可以用来中断任何循环,可能是非正常的中断。而且这是中止repeat循环的唯一方式。
next语句可以中止一个特定的循环,跳至下一个.
编写自己的函数
10.1 函数的定义
& name &- function(arg_1, arg_2, ...) expression&
expression是一个R表达式(通常是表达式语句组),并使用参数arg_i来计算出一个数值,表达式的值就是函数的返回值。
函数调用的形式通常都是name(expr1,expr2,...)
10.2 定义新的二元操作符
可以将函数定义为新的二元操作符:
&- function(X, y) { ... }
正如矩阵乘法运算符,%*%,和矩阵外积运算符%o%
10.3 指定参数和默认值
如果被调用函数的参数按照"name = obj"的形式给出,那么参数的次序可以是任意的。
而且,参数序列可以在开始依次序给出,而将指定名称的参数置于后面。
因此,如果由一个函数fun1被定义为
& fun1 &- function(data, data.frame, graph, limit) {
[function body omitted]
那么函数可以有多种等价的使用方法,例如
& ans &- fun1(d, df, TRUE, 20)
& ans &- fun1(d, df, graph=TRUE, limit=20)
& ans &- fun1(data=d, limit=20, graph=TRUE,
data.frame=df)
默认值&:在很多情况下,参数都会被赋予一个普遍适用的默认值。
& fun1 &- function(data, data.frame, graph=TRUE, limit=20) {
则函数可以这样被调用
& ans &- fun1(d, df)
此时与上面三种情况等价,也可以这样调用
& ans &- fun1(d, df, limit=10)
此时改变了一个默认值。
NOTE:参数可以是任意表达式,甚至可以是包含其他参数的表达式;
10.4 额外参数“...”
当需要将一个函数的参数传递给另一个函数时,可以通过包含一个额外的参数"..."实现。
fun1 &- function(data, data.frame, graph=TRUE, limit=20, ...)
[omitted statements]
if (graph)
par(pch="*", ...)
[more omissions]
10.5 全局变量和局部变量
函数内的赋值都是局部变量,退出函数就丢失了。
如果要在函数内进行永久赋值(定义全局变量),需要用到“超赋值”操作符, &&-或者函数assign()。
10.6 一些高级示例
区组设计的效率因子&(E±ciency factors)
删除打印数组中的所有名称
递归的数值积分
10.7 范畴(Scope)
函数主体内出现的标识(symbol)可以被分为3类;正式参数、局部变量和自由变量。
正式参数就是出现在函数参数列表中的参数,他们的值由实际的函数参数与正式参数的绑定(binding)过程决定。
局部变量是在参数主体中,由表达式求值过程决定的变量。
自由变量为既不是正式参数又不是局部变量的变量。赋值之后自由变量成为局部变量。
在R中,自由变量的值由函数被创建的环境中与其同名的第一个变量值决定(我理解为最近的同名变量),这种方式被称为词汇式范畴(lexical
而在S中,该值由同名的全局变量决定。
例如下面的函数cube,在R中cube(2)=8,在S中报错为sq()找不到n。
cube &- function(n) {
sq &- function() n*n
一个银行账户的例子,详见《R语言笔记》。
10.8 定制环境
详见《R语言笔记》。
10.9 类别,通用函数和对象定位
一个对象的类别(class)决定了他会如何被通用函数(generic function)处理。
如果参数本身没有任何类别属性,或者其类别在特定问题中并不满足通用函数的要求,通常会有一个默认的动作被执行。
类别机制使用户可以为特定的目的设计和编写通用函数。
使用& methods(class="data.frame")可以查看数据帧的通用函数。
使用& methods(plot)可以查看plot函数能处理的类别。
& R的统计模型
<img STYLE="BorDer-riGHT: BorDer-Top: BorDer-LeFT: BorDer-BoTToM: max-width: 100%" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://img.my.csdn.net/uploads//_1590.png"
TITLE="[转载]R语言学习笔记&&&%是什么意思" />
在Windows下用window()命令可以打开图形窗口。
高级绘图命令
高级绘图函数,由函数参数提供数据生成一幅完整的图形。其中适当的坐标轴,标签和标题都自动生成了(除非你另外指定了)。高级绘图命令每次都生成一幅新的图形,清除当前的图形(如果需要的话)。
1 &plot()函数
这是一个通用函数:生成图形的类型取决于第一个参数的类型或类别(class)。
plot(x,y) &plot(xy):
如果x,y是向量,plot(x,y)生成一幅y对x的散点图。用包含两个元素x,y的一个列表或一个两列的矩阵作为一个参数(第二种形式那样的)也能达成相同的效果。
如果x是一个时间序列,这个命令生成一个时间序列图,如果x是一个数值型向量,则生成一个向量值对它们向量索引的土,而如果x是一个复向量,则生成一个向量中元素的虚部对实部的图。
plot(f) &&plot(f,y):
f是一个因子对象,y是一个数值型向量。第一种形式生成一个f的条形图;第二种形式生成y对应于f各个水平的箱线图。
plot(df) &&plot( expr)
& &plot(y expr):
df是一个数据帧,y是任意对象,expr是由对象名称组成的列表,分隔符'+'(例如,a + b +
c)。前两种形式生成分布式的图形,第一种是数据帧中的变量,第二种是一系列被命名的对象。第三种形式生成y对expr中每个对象的图。
2 显示多元数据
如果X是一个数值矩阵或数据帧,下面的命令
&&pairs(X)&
生成一个配对的散点图矩阵,矩阵由X中的每列的列变量对其他各列列变量的散点图组成,得到的矩阵中每个散点图行、列长度都是固定的。
当问题涉及到三、四个变量时,使用coplot更好些。如果a和b是数值向量,c是数值向量或因子对象(全都是相同长度的),下面的命令
&&coplot(a ~
对应c的某些给定值生成数个a对b的散点图。当c是一个因子时,这个命令也就是对c的每个水平生成a对b的散点图。当c是数值向量的时候,这个数值向量被分为一系列的条件区间(conditioning
intervals),对应c的每个区间生成一个a对b的散点图。区间的数量和位置可以通过coplot()的参数given.values来控制,函数co.intervals()也可以用来选择区间。我们也可以使用两个给定变量通过命令
&coplot(a ~ b | c+d)
对c和d的每个联合条件区间生成a对b的散点图。
函数coplot()和pairs()都可以使用参数panel=,这个参数可以用来定制我们得到的图形类型。默认的是points()函数,生成一个散点图,不过通过在参数panel=中提供某些其它的低级图形函数,我们可以生成需要的各种图形。一个很有用的函数例子是panel.smooth()。
3 显示图形
&&qqline(x)
&qqplot(x,y)
分布比较图。第一种形式生成向量x对期望正态分数(一个正态记分图),第二个在上面的图上添加一条穿过分布分位点和数据分位点的直线。第三个命令生成x的分位点对y分位点图,用于分别比较它们的分布。
&&hist(x,nclass=n)
&&hist(x,breaks=b, . . . )
生成数值变量x的直方图。通常会自动选定一个合理的类别数,不过可以通过nclass=参数来指定一个推荐值。或者通过参数breaks=来指定分界点。如果给定了probability=TRUE参数,那么条形图代表相对频数而不是累计数。
dotchart(x, . . . )
创建一个x中数据的点图(dotchart)。点图中y轴给出x中数据的标签,x轴给出它们的值。它允许对落入某一特定区间的所有数据项方便的进行可视化选择。
image(x,y,z, . . . ) &
&&contour(x,y,z,
&persp(x,y,z, . . . )
生成三个变量的图。函数image是用不同的颜色绘制一些矩形方格来展示z的值,函数contour通过绘制等高线来展示z的值,函数persp绘制一个3D面。
4 参数配置
add=TRUE & &
&强制函数按照低级图形函数的方式操作,将图形置于当前图形上(仅对某些函数有效)。
axes=FALSE & &
暂时禁止坐标轴的生成|以便使用axis()函数添加你自己定制的坐标轴。默认情况是axes=TRUE,即包含坐标轴。
&&log="xy" &
&令x,y或者两者全都对数化。这个参数对许多函数都有效,不过不是全部。
&参数type=控制所生成图形的类型:
&&type="p" 绘制单独的点(默认值)
&&type="l" 绘制线
&&type="b" 绘制由线连接的点(both)
&&type="o" 将点绘在线上
&&type="h"
绘制从点到零轴的垂线(high-density)
&&type="s"&阶梯式图。第一种形式中,点由垂线的顶部定义;第二种形式里用底部定义。
&&type="n"
不绘制。不过坐标轴是绘出的(默认情况)而且要根据数据绘出坐标系统。用来给后续的低级图形函数创建图形作基础。
xlab=string &
&ylab=string &
&x轴或y轴的标签。使用这些参数来改变默认的标签,通常的默认值是调用高级绘图函数时所使用对象的名称。
main=string & &
&图表标题,位于图形的顶部,大字体显示。&
sub=string & &
&&子标题,位于x轴下面,用较小的字体显示。
& 低级绘图命令
有些时候高级绘图函数并不能很精确的生成我们想要的图形。这种情况下,我们可以通过低级绘图命令在当前图形上添加信息(例如,点、线或文本)。
points(x,y) &
&lines(x,y)
在当前图形上添加点或线。函数plot()的参数type=也可以用于这些函数(默认的是"p"代表points()和"l"代表lines())。
text(x,y,labels, . . . )
给定点坐标x,y,在该点添加文本。通常labels是一个整数或字符向量,其中labels[i]出现在点(x[i],y[i])。默认值是1:length(x)。
Note: 这个函数通常用于这样的序列中
&& plot(x, y, type="n"); text(x, y,
图形参数type="n"阻止了点的生成,但是建立了坐标轴,由函数text()提供字符向量names所指定的特定字符。
abline(a, b)
&&abline(h=y)
&&abline(v=x) &
&abline(lm.obj)
在当前图上添加一条斜率为b,截距为a的直线。h=y在图形指定的高度上绘制一条贯穿图形的水平线,同样的,v=x在x轴的指定位置绘制一条贯穿的垂线。而lm.obj是一个包含coefficients组件的列表,该组件的长度为2,分别当作截距和斜率。
polygon(x, y, . . . )
绘制一个多边形,其顶点由(x,y)指定。同时还(可选的)可以加上阴影线,如果图形设备允许的话还可以将多边形填充。
legend(x, y, legend, . . . )
这当前图形的指定位置添加图例。绘制的字符,线条类型,颜色等等由字符向量legend指定。除此之外至少还要给出一个参数v,与绘图单元的相应值,分别有:
legend( , fill=v)填充方框的颜色
legend( , col=v)绘制点线的颜色
legend( , lty=v)线条类型
legend( , lwd=v)线条宽度
legend( , pch=v)绘制字符(字符向量)
title(main,sub)
在当前图形的顶部用大字题添加一个标题main,在底部用较小的字体添加子标题sub。
axis(side, . . . )
在当前图形的指定边上添加坐标,在哪个边上由第一个参数指定(1到4,从底部按照顺时针顺序)。其他参数控制坐标的位置|在图形内或图形外,以及标记的位置和标签。适合在调用参数为axes=FALSE的函数plot()后添加定制的坐标轴。
低级绘图函数通常都需要一些位置信息(例如,x,y坐标)来决定在哪里添加新的元素。坐标以用户坐标(user
coordinates)的形式给出,这个坐标系是根据所提供的数据由之前的高级绘图语句定义的。需要x,y参数的地方还可以选用一个单独的参数,即一个由名为x,y的元素组成的列表。相似的,一个两列的矩阵也可以。像locator()(后面会提到)这样的函数也可以按照这种方式交互的指定图形中的位置。
添加数学注释
某些情况下需要在图形中加入数学符号或公式。在R中可以通过在text,
mtext,axis或title中指定一个表达式来实现。例如,下面的代码绘制了二项概率函数的公式:
& text(x, y, expression_r(paste(bgroup("(", atop(n, x), ")"),p^x,
q^{n-x})))
更多的信息,包括其特性的一个完整列表可以在R中通过下面的命令得到:
& help(plotmath)
& example(plotmath)
添加Hershey矢量字体
& help(Hershey)
& example(Hershey)
图形的交互
R提供了函数,使用户可以通过鼠标从图形中释放信息或添加信息。
locator(n,type)
等待用户使用鼠标左键在当前图形上选择位置。直到n(默认是512)个点都选完或者点击了鼠标另一个键(Unix,Windows),在Mac下用鼠标点击图形窗口外的部分也可以结束。参数type的效果和在高级绘图函数中使用时是一样的,即在选择的点绘制指定的图形。默认情况是不绘制图形。函数locator()将所选点的坐标返回到一个列表中,列表包含x,y两个组件。
通常locator()在调用的时候并不带参数。这个功能在为图例或标签这样的图形元素选择位置时比较有用,尤其是这些位置不好通过计算得到的时候。举个例子,如果要在一个野点附近添加一些信息,可以使用下面的命令
& text(locator(1), "Outlier", adj=0)
identify(x, y, labels)
允许用户在x,y(使用鼠标左键)定义的点附近绘制相应的labels的组件(如果没有给出labels就给出该点的序号),突显该点。当鼠标的另一个键被点击时(Unix,Windows)返回被选点的序号,在Mac下通过点击图形窗口外来实现这个效果。
有时我们更想确定图形中的点,而非它们的位置。例如,我们可能希望从图示中选出某些感兴趣的观测点,然后进行某些操作。通过两个数值向量x,y给定一系列坐标(x;
y),我们可以使用identify()函数:
& plot(x,y) & identify(x,y)
函数identify()本身不绘图,但是允许用户移动鼠标,在某点附近点击左键。离鼠标指针最近的点将被突显,并标出其序号(也就是它在向量x/y中的位置)。或者使用identify()的labels参数,把某些信息(例如案例名称)作为突显的标志;或者通过plot=FALSE参数取消所有突显标志。当选点的过程结束后,identify()返回所选点的序号;用户可以使用这些序号从x和y中释放所选的点。
使用图形参数
通过图形参数可以定制图形显示的几乎所有方面。R包含大量的图形参数,可以控制的包括线条类型,颜色,图标排列,文本对齐等等。
1 持续性变更&(Permanent changes):
通过par()函数设定图形参数的值会持续性的更改参数的值,也就是说这之后(在当前设备上)所有对图形函数的调用都受到新值的影响。
函数par()用于存取和修改当前图形设备的图形参数列表。
par()不带任何参数,返回当前设备所有图形参数和它们的值的列表。
par(c("col","lty"))
参数为一个字符向量,仅返回参数中指定的图形参数(也是作为一个列表)。
par(col=4, lty=2)
带指定参数(或一个列表型参数),设定指定图形参数的值,并将参数的原始值作为一个列表返回。
所以如果想设定参数绘制一些图形后再恢复成原来的设定,可以这么做:
& oldpar &- par(col=4, lty=2)&
. . . plotting commands . . .&
& par(oldpar)
2 临时性变更:图形函数的参数
图形参数也可以作为(几乎)所有图形函数的命名参数。这种方式的效果和用于par()函数的效果是一样的,只不过这种改变只在函数调用的区间内有效。比如:
&&plot(x, y,
生成一个以加号作为绘图符号的散点图,而不改变后续图形的默认的绘图符号。
3 图形参数列表
A &图形元素
R图表由点、线、文本和多边形(填充区)组成。下面的图形参数控制了图形元素的绘制:
用来绘点的字符。这个默认值随不同的图形驱动是不同的,不过通常都是'±'。除非使用"."作为绘图字符,否则绘制的点都会比适当的位置高一点或者低一点,而不是恰好在指定位置。
pch=4当给定一个0到18的整数时,会生成一个特殊的绘图符号。通过下面的命令可以看这些符号都有什么。
& legend(locator(1), as.character(0:18), pch=0:18)
lty=2 线条类型。并不是所有图形设备都支持多种线条类型(在那些支持的设
备上也不全一样),不过线条类型1始终是实线,2及以上的是点、划线或者它们的组合。
线条宽度。所需的线条宽度,是"标准"线条宽度的倍数。对line()等函数绘制的线条和坐标轴都有效果。
点、线、文本、填充区和图像使用的颜色。每种图形元素都有其可用的颜色列表,这个参数的值就是颜色在列表中的序号。显然,这个参数值对有限的一类设备有效。
指定文本所使用字体的一个整数。如果可能的话,设备驱动会把1对应普通文本,2对应粗体,3对应斜体,4对应粗斜体。
font.axis &&font.lab
& &font.main
&&font.sub
这几个参数分别指定坐标轴注释,x,y轴的标签,主、副标题所用的字体。
文本对齐和绘图位置有关。0代表左对齐,1代表右对齐,0.5代表水平的中间位置。当前的值使会图位置到左端距离的比例,所以-0.1在文本和绘图位置之间留10%的空白。
cex=1.5 字符缩放。这个值是所需文本字符(包括绘图字符)的大小,与默认文本大小相关。
B &坐标轴和标记
很多R的高级图形都有坐标轴,你可以使用低级图形函数axis()自己创建坐标轴。坐标轴包含三个主要组件:轴线axis
line(线条类型由参数lty控制),标记tick mark(沿着轴线划分单元),标号tick
label(用来标出这些单元)。这些组件可以用下面这些参数定制。
lab=c(5,7,12)前两个数字分别是x和y轴上所要划分的区间数。第三个数字是坐标轴标签的长度,用字符数来衡量(包括小数点)。参数的值如果选得太小可能导致所有标号都聚在一起。
坐标轴标签的方向。0代表总是和坐标轴平行,1代表总是水平的,2代表总是垂直于坐标轴。
mgp=c(3,1,0)坐标轴组件的位置。第一个组件是坐标轴标签到坐标轴的距离,单位是文本行(text
lines)。第二个组件是到标号的距离,最后一个是轴的巍直到轴线的距离(一般都是0)。正数代表绘图区域外,负数代表区域内。
标号的长度,绘图区域大小的一个分数作单位。当tck比较小时(小于0.5),就强制x和y轴上的标记为相同大小。tck=1就是生成网格线。取负值时标记画向绘图区域外。内部标记可以使用tck=0.01和mgp=c(1,-1.5,0)。
&&yaxs="d"
分别是x、y轴的类型。如果是s(standard)或e(extended)类型,那最大和最小的标记都始终在数据区域之外。如果有某个点离边界非常近,那么扩展型(extended)的轴会稍稍扩展一下。这种类型的轴有时会在边界附近留出大片空白。而i(internal)或r(默认值)类型的轴,标记始终在数据区域内,不过r类型会在边界留出少量空白。
如果这个参数设为d,就锁定当前轴,对之后绘制的所有图形都用这个轴(直到参数被重新设定为其他的那几个值)。这个参数适用于生成一系列固定尺度的图。
C &图边缘(Figure margins)
在R中一个单独图形,图(figure),包含一个绘图区(plot
region),以及环绕着这个区域的边缘(其中可能含有坐标轴标签、标题等等),(通常)这两部分以轴为边界。
一个典型的图是
<img STYLE="BorDer-riGHT: BorDer-Top: BorDer-LeFT: BorDer-BoTToM: max-width: 100%" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://img.my.csdn.net/uploads//_6990.png"
TITLE="[转载]R语言学习笔记&&&%是什么意思" />
控制图的样式的图形参数包括:
mai=c(1,0.5,0.5,0)分别是底部,左侧,顶部,右侧的宽度,单位是英寸。
mar=c(4,2,2,1)与mai相似,只是单位是文本行(text lines)。
由于更改一个就会改变另一个的值,所以在这个意义上,mai和mar是等价的。这个参数的默认值通常都太大了;右侧边缘很少用到,如果没标题,顶部边缘也不需要,左侧和底部的边缘应当足够大,以容纳坐标轴和标号。此外,默认值并没有考虑到设备表面的大小:比如,使用postscript()驱动,height=4参数时,除非用mar,mai另外设定,否则图的边缘就要占上大约50%。使用多图环境时(后面会提到)。边缘会减少一半,不过这在多图共用一页的时候可能还不够。
D 多图环境
R允许在一页上创建一个n&m的图的阵列。每个图由自己的边缘,图的阵列还有一个可选的外部边缘,如下图所示。
<img STYLE="BorDer-riGHT: BorDer-Top: BorDer-LeFT: BorDer-BoTToM: max-width: 100%" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://img.my.csdn.net/uploads//_1166.png"
TITLE="[转载]R语言学习笔记&&&%是什么意思" />
与多图环境相关的图形参数有:
mfcol=c(3, 2) &
&mfrow=c(2, 4)
&设定多图阵列的大小。第一个值是行数,第二个值是列数。这两个参数唯一的区别是mfcol把图按列排入,mfrow把图按行排入。上图所示的版式可用mfrow=c(3,2)创建;上图显示的是绘制四幅图后的情况。
mfg=c(2, 2, 3, 2)
&&当前图在多图环境下的位置。前两个数字是当前图的行、列数;后两个是其在多图阵列中的行列数。这个参数用来在多图阵列中跳转。你甚至可以在后两个数中使用和真值(true
value)不同的值,在同一页上得到大小不同的图。
fig=c(4, 9, 1, 4)/10
&&当前图在页面的位置,取值分别是左下角到左边界,右边界,下、上边界的距离与对应边的百分比数。给出的例子是一个页面右下角的图。这个参数可以设定图在页面的绝对位置。
oma=c(2, 0, 3, 0)
&&omi=(0, 0,
&外部边缘的大小。与mar和mai相似,第一个用文本行作单位,第二个以英寸作单位,从下方开始按照顺时针顺序指定。
外部边缘对页标题这类东西很有用。文本可以通过带outer=TRUE参数的mtext()函数加入外部边缘。默认情况下是没有外部边缘的因此必须通过oma或omi指定。
函数split.screen()和layout()可以对多个图形作更复杂的排列。
R几乎可以在任何一种类型的显示器和打印设备上生成(不同质量的)图形。不过,在这之前,需要告诉R要处理的是哪一种设备。这通过启动一个设备驱动来完成。
设备驱动通过调用设备驱动函数来启动。
某些常用的设备驱动有:
X11()[Unix] 使用X11视窗系统
windows()[Windows] &&使用&Windows&视窗系统&
postscript()在PostScript打印机上打印或者创建PostScript图形文件
pictex()生成一个LATEX文件
当一个设备使用完之后,可以通过下面的命令终止设备驱动
&&dev.off()
这个命令可以确保设备已经结束;例如,在某些硬拷贝的设备中,这个命令可以保证每页都已经完成,并且都被传送到打印机了。
PostScript文档
通过给postscript()函数带上file参数,我们可以把图形以PostScript格式存储到文件中。如果没有给出horizontal=FALSE参数,图形是横向的,你可以通过width和height参数控制图形的大小(图形会自动适应)。例如,命令
& postscript("file.ps", horizontal=FALSE, height=5,
pointsize=10)
为一个五英寸的图生成一个包含PostScript代码的文件,可以放在文当中。如果命令中的指定的文件名已经存在,将会被覆盖。
多重图形设备
每个对设备驱动的新调用都会打开一个新的图形设备,在设备列表中加入新的一项。这个设备就成为当前设备,图形输出就传送到这个设备。
dev.list() & &
&返回所有活动中设备的序号和名称。在列表位置1的设备始终是空设备(null
device),这个设备不接收任何图形命令。
dev.next() &
&dev.prev() &
& 分别返回当前设备的后一个和前一个设备的序号和名称。
dev.set(which=k) &
& 用来把当前设备更改为设备列表中位置k的那个。返回设备的序号和标签。
dev.off(k) &
&终止图形列表位置k的那个图形设备。对于某些设备,比如postscript,这个命令会立刻打印文件或者正常结束文件,具体怎样处理取决于设备是怎样初始化的。
dev.copy(device,. . . ,which=k) &
& &dev.print(device,. . .
建立一个设备k的拷贝。其中device是一个设备函数,例如postscript,如果需要的话可以在'. . .
'中指定其它的参数,dev.print效果相似,不过复制的设备会立刻关闭,所以打印硬拷贝这样的终止操作也会被立即执行。
graphics.off() &
& &终止列表中的所有图形设备,空设备除外。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

 

随机推荐