本文对应《R语言编程艺术》

第8章:数学运算与模拟;

第10章:输入与输出;

第11章:字符串操作;

第12章:绘图

=========================================================================

数学运算与模拟

数学函数:

数学函数

说明

exp()

以自然常数e为底的指数函数

log()

自然对数

log10()

以10为底的常用对数

sqrt()

平方根

abs()

绝对值

sin(), cos()

三角函数

min(), max()

向量的最小、最大值

which.min(), which.max()

向量的最小、最大元素的位置索引

pmin(), pmax()

把多个等长度的向量按元素逐个对比,返回所有向量的第k个元素中最小(最大)的值

sum(), prod()

把一个向量的所有元素求和(求积)

cumsum(), cumprod()

把一个向量的前K个元素累计求和(求积)

round(), floor(), ceiling()

分别是四舍五入取整、向下取整、向上取整

factorial()

阶乘

要求函数的最小、最大值,需要用nlm()和optim()

R也可以进行微积分运算,包括符号微分和数值积分:

#符号微分
D(expression(exp(x^2)), “x”)
#数值积分
integrate(function(x) x^2, 0, 1)

  

R的odesolve包可以用于处理微分方程;ryacas包提供了R与Yacas符号数学系统接口。

统计分布函数:

一般为前缀加统计分布函数名组成具体函数

前缀:

d  概率密度函数或概率质量函数

p  累计分布函数

q  分布的分位数

r  随机数生成函数

排序:

对向量进行普通的数值排序,可以使用sort()函数完成;如果想得到原向量的索引,可以使用order()函数。

相关函数还有rank(),它返回向量中每一个元素的排位(rank,第几小,以小数处理并列排名)

向量和矩阵的线性代数运算:

函数

线性代数运算

crossprod()

向量内积

solve()

求解线性方程组或者计算矩阵的逆

t()

矩阵的转置

qr()

QR分解

chol()

Cholesky分解

det()

矩阵的行列式

eigen()

矩阵的特征值和特征向量

diag()

从方阵中提出对角矩阵

sweep()

数值分析批量运算符

diag()函数:如果输入矩阵则返回向量,输入向量则返回矩阵,输入标量则返回相应大小的单位对角矩阵。

集合运算:

集合运算函数

说明

union(x, y)

集合x和y的并集

intersect(x, y)

集合x和y的交集

setdiff(x, y)

集合x和y的差集

setequal(x, y)

检验集合x和y是否相等

c%in%y

成员,检验c是否为集合y中的元素

choose(n, k)

从含有n个元素的集合中选取含有k个元素的子集的数目

用R做模拟:

为了重复运行时获得相同的随机数流,使用set.seed()函数。

=========================================================================

输入与输出

连接键盘与显示器:

scan()函数、readline()函数、print()函数、cat()函数

scan()函数:从文件中读取或者用键盘输入一个向量,可以是数值型或字符型向量。注意读取时默认变量为double型,如果字符型需要手动设置what = “”(或者任意字符串),否则会报错;默认分割符为“空白字符”(whitespace),同样可以手动设置其他类型;当scan()函数接收的文件名为空时,会从键盘读取数据,命令行在每行行首提示的数字是下一个输入项的索引,键入一个空行表示结束输入,默认报告已读取的项目数,如果不希望得到报告,可以设置quiet = TRUE。

readline()函数:可以从键盘输入单行数据,可以指定一个提示语字符串作为参数。

print()函数:打印对象内容;

cat()函数:也是打印对象内容,但是与print()不同之处在于,不会输出编号,只输出内容;可以灵活自定义输出分隔符。

读写文件:

从文件中读取数据框或矩阵、文本文件的操作、访问远程机器上的文件、读取文件和目录信息。

从文件中读取数据框或矩阵:read.table()函数;

读取文本文件:readLines()函数。

连接的介绍:一般通过调用file()/url()或其他R函数创建,更多函数可在命令行输入?connection查看。用close()函数关闭连接,可以让系统知道你已经完成读取操作,可以正式写入磁盘,在互联网上操作可以告诉服务器客户已下线。

通过URL在远程计算机上访问文件:某些I/O函数,如read.table()和scan(),可以用网站地址(URL)作为参数(替代文件名)在网络上访问文件。

写文件:write.table()函数;cat()函数;writeLines()函数

> #cat()函数可以创建文件u,一次写入一部分,每次写文件都会自动保存
> cat(“abc\n”, file = “u”)
> cat(“de\n”, file = “u”, append = TRUE)> #file()函数创建文件www并通过设置w建立写入连接
> #writeLines()会将字符串向量分行写入,需要主动关闭连接才能保存文件
> c <- file(“www”, “w”)
> writeLines(c(“abc”, “de”, “f”), c)
> close(c)

  

获取文件和目录信息:

函数

说明

file.info()

参数是表示文件名的字符串向量,函数会给出每个文件的大小、创建时间、是否为目录等信息

dir()

返回一个字符串向量,列出其第一个参数指定的目录中的所有文件的名称。如果指定recursive = TRUE,结果将把第一个参数下面整个目录树都显示出来

file.exists()

返回一个布尔向量,表示作为第一个参数的字符串向量中给定的每个文件名是否存在

getwd()/setwd()

用于确定或改变当前的工作目录

命令行输入?files可以查看所有与文件和目录相关的函数

访问互联网:

R的套接字(socket)工具可以让程序员访问互联网(Internet)的TCP/IP协议。

R中的socket:

A在与B的连接期间发送的所有字节被看作是一个整体,称为“长消息”(big message)。将长消息分割回若干行文本需要一些额外的工作,对此问题,以下方法可以达到解决目的:

readLines()和writeLines():这两个函数允许你在写程序时把TCP/IP的消息传输当作是一行一行传递的,尽管这并不是真实情况。如果你要传输的数据本质上就是按行分隔的,那么这两个函数将是非常方便的。

serialize()和unserialize():可以利用这两个函数传输R对象,比如矩阵或者某个统计函数的复杂输出结果。传输对象将在发送端转换成字符串形式,然后在接收端转换回原来的对象形式。

readBin()和writeBin():这两个函数用于传输二进制的数据。

以上每个函数都可以对R中的连接进行操作。

此外R中还有另外两个socket函数:

socketConnection():该函数可以通过socket来创建一个R连接。可以使用参数port来设定端口号,然后将server参数设为TRUE或FALSE来说明需要创建的是服务器还是客户端。如果创建的是客户端,还必须用host参数来设定服务器的IP地址。

socketSelect():该函数在服务器与多个客户端相连接时非常有用。其主要的参数socklist是一系列连接的列表,而返回值是这些连接的一个子列表,其中的元素所表示的连接提供了服务器可以读取的数据。

=========================================================================

字符串操作

常用字符串操作函数:

函数名及调用形式

功能

grep(pattern, x)

在字符串向量x里搜索字符串pattern,返回一个长度不超过x的向量,包含了符合条件的索引,如果没有符合条件的pattern,则会返回一个空向量

nchar(x)

返回字符串x的长度

paste(…)

用于把若干个字符串拼接起来

sprintf(…)

按一定格式把若干个组件组合成字符串

substr(x, start, stop)

返回给定字符串x中指定位置范围start:stop上的子字符串

strsplit(x, split)

函数根据x中的字符串split把字符串x拆分成若干子字符串,返回这些字符串组成的R列表

regexpr(pattern, text)

在字符串text中寻找pattern,返回pattern匹配的第一个子字符串的起始字符位置

gregexpr(pattern, text)

在字符串text中寻找pattern,返回pattern匹配的所有子字符串的起始字符位置

正则表达式:

正则表达式是一种通配符,用来描述一系列字符串的简略表达式。

例如[au]表示含有字母a或u的字符串,英文句点(.)表示任意一个字符,反斜杠(\)可以使字符脱离元字符属性(元字符:不按照字面意思理解的字符)。具体学习需要参照正则表达式的教程。

注意当通过一些符号作为字符串查找或分割时,出现一些不可预料的错误时,可以考虑是否是正则表达式引入的。

绘图

创建图形:

函数

功能

plot()

泛型函数,真正被调用的函数依赖于对象所属的类

abline()

添加线条(根据斜率与纵截距)

lines()

添加线条(根据两个截距)

points()

添加点

legend()

添加图例

text()

添加文字

locator()

精确定位

在保持现有图形的基础上新增一个绘图窗口:

hist(x)#Linux系统下
x11()#Mac系统
macintosh()#Windows系统
windows()hist(y)
#图形将在一个新窗口打开显示

  

定制图形:

选项

功能

cex

改变字符大小(倍数)

xlim, ylim

坐标轴范围

函数

功能

polygon()

添加多边形

lowess()/loess()

平滑散点

绘制具有显式表达式的函数图像:

根据表达式定义函数,描点即可。

实现方式:plot()描出所有点,或者直接使用curve(),参数设置为表达式与起止点即可。

将图形保存到文件:

R图形设备:

可以打开一个文件(如PDF):pdf(“d12.pdf”)

函数

功能

dev.list()

查看所有图形设备

dev.cur()

查看当前活动图形设备

dev.set()

设置活动图形设备,参数为dev.list()查询到的设备编号

dev.copy()

将图形拷贝到指定图形设备上,参数为dev.list()查询到的设备编号

dev.off()

关闭图形设备

创建三维图形:

R中提供了一系列函数用来绘制三维图形,例如persp()和wireframe()函数可以绘制曲面,cloud()函数可以绘制三维散点图。

#wireframe()函数使用范例
library(lattice)
a <- 1:10
b <- 1:15
eg <- expand.grid(x = a, y = b)
eg$z <- eg$x^2 + eg$x *eg$y
wireframe(z ~ x + y, eg)

  

转载于:https://www.cnblogs.com/gyjerry/p/6536463.html

R语言编程艺术(4)R对数据、文件、字符串以及图形的处理相关推荐

  1. R语言编程艺术(3)R语言编程基础

    本文对应<R语言编程艺术> 第7章:R语言编程结构: 第9章:面向对象的编程: 第13章:调试 ============================================== ...

  2. R语言编程艺术(1)快速入门

    这本书与手上其他的R语言参考书不同,主要从编程角度阐释R语言,而不是从统计角度.因为之前并没有深刻考虑这些,因此写出的代码往往是一条条命令的集合,并不像是"程序",因此,希望通过学 ...

  3. 系统自学R的第十二天#参考书籍《R语言编程艺术》

    时隔一天,我又来了. 今日也是函数的内容. 向量化的ifelse()函数 除了多数语言中常见的if-then-else结构,R还有一个向量化的版本:ifelse()函数.它的形式如下: ifelse( ...

  4. 《R语言编程艺术》——2.5 使用all()和any()

    2.5 使用all()和any() any() 和all() 函数非常方便快捷,它们分别报告其参数是否至少有一个或全部为TRUE. any()函数判断这些值是否至少一个为TURE.all()函数的功能 ...

  5. 《R语言编程艺术》——1.4 R语言中一些重要的数据结构

    1.4 R语言中一些重要的数据结构 R有多种数据结构.本节将简单介绍几种常用的数据结构,使读者在深入细节之前先对R语言有个大概的认识.这样,读者至少可以开始尝试一些很有意义的例子,即使这些例子背后更多 ...

  6. 《R语言编程艺术》——第1章 1.0 快速入门

    第1章 1.0 快速入门 如前言所述,R是一种针对统计分析和数据科学的功能全面的开源统计语言.它在商业.工业.政府部门.医药和科研等涉及数据分析的领域都有广泛的应用. 本章将给出R的简单介绍--如何调 ...

  7. R语言编程艺术#01#数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  8. r intersect()_30分钟掌握R语言编程基础

    R语言是世界上最广泛使用的统计编程语言.本文的目的是使得读者快速上手R语言编程. 1 R语言概述 R语言是世界上最广泛使用的统计编程语言.有人认为,它是数据科学家的第一选择(人生苦短,我选Python ...

  9. 数据科学家们,请补齐你的短板,如何提升R语言编程能力

    前言 这个世界每天都在源源不断地生产数据,而人们尤其是商界往往希望从这些数据中获取到有价值的信息.而这一点也促使很多试图从数据中提取有用信息的数据科学家们(或被叫做数据分析师.数据挖掘者等等听起来不错 ...

最新文章

  1. 「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程
  2. 浅谈postMessage跨域通信与localStorage实现跨域共享
  3. 线性回归竟然还有不明白的地方
  4. java查找最小字符集_如何查找Java中的默认字符集/编码?
  5. 贡献一个连jquery都觉的大的时候可以用的 js库
  6. Maven+SpringMVC+Dubbo+zookeeper 简单的入门demo配置
  7. 用计算机弹没那种命,成熟小女人QQ个性网名 没那种命就别犯那种病
  8. php字符串对象,PHP字符串到对象名称
  9. python字典键值可以是元组或列表吗_Python列表、元组、字典、集合的内置使用方法...
  10. poj 1160 dp
  11. Visual Basic里与Print有关的函数
  12. java多线程之守护线程以及Join方法
  13. css中自适应字体问题等
  14. Python爬虫之青果教务系统
  15. 智铺子微信扫码点餐系统有哪些可操作的功能
  16. 通过ScrollView实现滚动效果
  17. 微信在教育行业的营销
  18. 程序员的自我修养--链接、装载与库笔记:第一章温故而知新
  19. 关于PADS 9.5导入CAD图(dxf文件)的说明
  20. 互斥事件的概念和公式_2014-2015学年高二数学课件:《互斥事件的概率和加法公式》(湘教版必修五)...

热门文章

  1. (原创)无废话C#设计模式之十七:Chain Of Resp.
  2. EIGRP区域注入静态路由的三种方法--CCNP学习笔记
  3. Linux系统中CPU忙闲的衡量——load和idle
  4. Facebook开发地面技术扩大互联网连接
  5. linux下写脚本时-gt是什么意思
  6. XRDP与VNC的关系
  7. PostgreSQL 主从差异查看
  8. c# Dictionary 中Keys.ToArray方法的细节测试
  9. Comparator和Comparable (转)
  10. 两篇介绍IIS的文章