相关文章推荐
英姿勃勃的黄豆  ·  Getting Started | ...·  1 年前    · 
任性的香瓜  ·  Android Gradle Plugin ...·  1 年前    · 
很酷的山楂  ·  spring的scope为prototype ...·  2 年前    · 
  • 45.2.1 evalCpp() 转换单一计算表达式
  • 45.2.2 cppFunction() 转换简单的C++函数—Fibnacci例子
  • 45.2.3 sourceCpp() 转换C++程序—正负交替迭代例子
  • 45.2.4 sourceCpp() 转换C++源文件中的程序—正负交替迭代例子
  • 45.2.5 sourceCpp() 转换C++源程序文件—卷积例子
  • 45.2.6 随机数例子
  • 45.2.7 bootstrap例子
  • 45.2.8 在Rmd文件中使用C++源程序文件
  • 46 R与C++的类型转换
  • 46.1 wrap() 把C++变量返回到R中
  • 46.2 as() 函数把R变量转换为C++类型
  • 46.3 as() wrap() 的隐含调用
  • 47 Rcpp 属性
  • 47.1 Rcpp属性介绍
  • 47.2 在C++源程序中指定要导出的C++函数
  • 47.2.1 特殊注释 //[[Rcpp::export]]
  • 47.2.2 修改导出的函数名
  • 47.2.3 可导出的函数
  • 47.3 在R中编译链接C++代码
  • 47.3.1 sourceCpp() 函数中直接包含C++源程序字符串
  • 47.3.2 cppFunction() 函数中直接包含C++函数源程序字符串
  • 47.3.3 evalCpp() 函数中直接包含C++源程序表达式字符串
  • 47.3.4 depends 指定要链接的库
  • 47.4 Rcpp属性的其它功能
  • 47.4.1 自变量有缺省值的函数
  • 47.4.2 异常传递
  • 47.4.3 允许用户中断
  • 47.4.4 把R代码写在C++源文件中
  • 47.4.5 invisible 要求函数结果不自动显示
  • 47.4.6 在C++中调用R的随机数发生器
  • 48 Rcpp提供的C++数据类型
  • 48.1 RObject类
  • 48.2 IntegerVector类
  • 48.2.1 IntegerVector示例1:返回完全数
  • 48.2.2 IntegerVector示例2:输入整数向量
  • 48.3 NumericVector类
  • 48.3.1 示例1:计算元素 \(p\) 次方的和
  • 48.3.2 示例2: clone 函数
  • 48.3.3 示例3:向量子集
  • 48.4 NumericMatrix类
  • 48.4.1 示例1:计算矩阵各列模的最大值
  • 48.4.2 示例2:把输入矩阵制作副本计算元素平方根
  • 48.4.3 示例3:访问列子集
  • 48.5 Rcpp的其它向量类
  • 48.5.1 Rcpp的LogicalVector类
  • 48.5.2 Rcpp的CharacterVector类型
  • 48.6 Rcpp提供的其它数据类型
  • 48.6.1 Named类型
  • 48.6.2 List类型
  • 48.6.3 Rcpp的DataFrame类
  • 48.6.4 Rcpp的Function类
  • 48.6.5 Rcpp的Environment类
  • 49 Rcpp糖
  • 49.1 简单示例
  • 49.2 向量化的运算符
  • 49.2.1 向量化的四则运算
  • 49.2.2 向量化的赋值运算
  • 49.2.3 向量化的二元逻辑运算
  • 49.2.4 向量化的一元运算符
  • 49.3 用Rcpp访问数学函数
  • 49.4 用Rcpp访问统计分布类函数
  • 49.5 在Rcpp中产生随机数
  • 49.6 返回单一逻辑值的函数
  • 49.7 返回糖表达式的函数
  • 49.7.1 is_na
  • 49.7.2 seq_along
  • 49.7.3 seq_len
  • 49.7.4 pmin pmax
  • 49.7.5 ifelse
  • 49.7.6 sapply lapply
  • 49.7.7 sign
  • 49.7.8 diff
  • 49.8 R与Rcpp不同语法示例
  • 49.9 用RcppArmadillo执行矩阵运算
  • 49.9.1 生成多元正态分布随机数
  • 49.9.2 快速计算线性回归
  • 50 用Rcpp帮助制作R扩展包
  • 50.1 不用扩展包共享C++代码的方法
  • 50.2 生成扩展包
  • 50.2.1 利用已有基于Rcpp属性的源程序制作扩展包
  • 50.2.2 DESCRIPTION文件
  • 50.2.3 NAMESPACE文件
  • 50.3 重新编译
  • 50.4 建立C++用的接口界面
  • 51 R编程例子
  • 51.1 R语言
  • 51.1.1 用向量作逆变换
  • 51.1.2 斐波那契数列计算
  • 51.1.3 穷举所有排列
  • 51.1.4 可重复分组方式穷举
  • 51.1.5 升降连计数
  • 51.1.6 高斯八皇后问题
  • 51.1.7 最小能量路径
  • 51.2 概率
  • 51.2.1 智者千虑必有一失
  • 51.2.2 圆桌夫妇座位问题
  • 51.3 科学计算
  • 51.3.1 城市间最短路径
  • 51.3.2 Daubechies小波函数计算
  • 51.3.3 房间加热温度变化
  • 51.4 统计计算
  • 51.4.1 线性回归实例
  • 51.4.2 核回归与核密度估计
  • 51.4.3 二维随机模拟积分
  • 51.4.4 潜周期估计
  • 51.4.5 ARMA(1,1)模型估计
  • 51.4.6 VAR模型平稳性
  • 51.4.7 贮存可靠性评估
  • 51.5 数据处理
  • 51.5.1 小题分题型分数汇总
  • 51.5.2 类别编号重排
  • 51.6 文本处理
  • 51.6.1 用R语言下载处理《红楼梦》htm文件
  • 52 使用经验
  • 52.1 文件管理
  • 52.1.1 文件备份
  • 52.1.2 工作空间
  • 52.2 程序格式
  • A R Markdown文件格式
  • A.1 R Markdown文件
  • A.2 R Markdown文件的编译
  • A.2.1 编译的实际过程
  • A.3 在R Markdown文件中插入R代码
  • A.4 输出表格
  • A.5 利用R程序插图
  • A.6 冗余输出控制
  • A.7 代码段选项
  • A.7.1 代码和文本输出结果格式
  • A.7.2 图形选项
  • A.7.3 缓存(cache)选项
  • A.8 章节目录链接问题
  • A.9 其它编程语言引擎
  • A.10 交互内容
  • A.11 属性设置
  • A.11.1 YAML元数据
  • A.11.2 输出格式
  • A.11.3 输出格式设置
  • A.11.4 目录设置
  • A.11.5 章节自动编号
  • A.11.6 Word输出章节自动编号及模板功能
  • A.11.7 HTML特有输出格式设置
  • A.11.8 关于数学公式支持的设置
  • A.11.9 输出设置文件
  • A.12 LaTeX和PDF输出
  • A.12.1 TinyTex的安装使用
  • A.12.2 Rmd中Latex设置
  • A.13 生成期刊文章
  • A.14 附录:经验与问题
  • A.14.1 Word模板制作
  • A.14.2 数学公式设置补充
  • B 用bookdown制作图书
  • B.1 介绍
  • B.2 一本书的设置
  • B.3 章节结构
  • B.4 书的编译
  • B.5 交叉引用
  • B.6 数学公式和公式编号
  • B.7 定理类编号
  • B.8 文献引用
  • B.9 插图
  • B.10 表格
  • B.10.1 Markdown表格
  • B.10.2 kable() 函数制作表格
  • B.10.3 R中其它制作表格的包
  • B.11 数学公式的设置
  • B.12 使用经验
  • B.12.1 学位论文
  • B.12.2 LaTeX
  • B.12.3 算法
  • B.12.4 中文乱码
  • B.12.5 图片格式
  • B.12.6 其它经验
  • B.13 bookdown的一些使用问题
  • C 用R Markdown制作简易网站
  • C.1 介绍
  • C.2 简易网站制作
  • C.2.1 网站结构
  • C.2.2 编译
  • C.2.3 内容文件
  • C.2.4 网站设置
  • C.3 用blogdown制作网站
  • C.3.1 生成新网站的框架
  • C.3.2 网页内容文件及其设置
  • C.3.3 初学者的工作流程
  • C.3.4 网站设置文件
  • C.3.5 静态文件
  • D 制作幻灯片
  • D.1 介绍
  • D.2 Slidy幻灯片
  • D.2.1 文件格式
  • D.2.2 幻灯片编译
  • D.2.3 播放控制
  • D.2.4 生成单页HTML
  • D.2.5 数学公式处理与输出设置文件
  • D.2.6 其它选项
  • D.2.7 slidy幻灯片激光笔失效问题的修改
  • D.3 MS PowerPoint幻灯片
  • D.4 Bearmer幻灯片格式
  • D.5 R Presentation格式
  • References
  • 编著:李东风
  • C_{52}^3 = \frac{52!}{3! (52-3)!} = \frac{52 \times 51 \times 50}{3\times 2 \times 1} 在R中计算如:

  • 某人存入10000元1年期定期存款,年利率3%, 约定到期自动转存(包括利息)。问:

  • 10年后本息共多少元?

  • 需要存多少年这10000元才能增值到20000元?

  • 成语说:“智者千虑,必有一失;愚者千虑,必有一得”。 设智者作判断的准确率为 \(p_1 = 0.99\) , 愚者作判断的准确率为 \(p_2=0.01\) , 计算智者做1000次独立的判断至少犯一次错误的概率, 与愚者做1000次独立判断至少对一次的概率。

  • sqrt(6.25) 表示 \(\sqrt{6.25}\) ,结果为2.5。 exp(1) 表示 \(e^1\) ,结果为 \(e=2.718282\) log10(10000) 表示 \(\lg 10000\) ,结果为 \(4\) log 为自然对数。

    2.3.2 数学函数——取整

    R中调用函数, 与调用数学函数的规则相近, 如 sqrt(1.44) 。 有些函数允许有可选参数, 比如, round(1.2345) 结果是四舍五入取整, 加选项 round(1.2345, digits=2) 结果则变成四舍五入到两位小数精度。

    复合函数的调用也与数学中用法类似, 如 log(exp(1.0)) 表示 \(\ln e^{1.0}\)

    2.5.1 简单输出

    命令行的计算结果直接显示在命令的后面。 在用source()运行程序文件时, 需要用print()函数显示一个表达式的结果,如:

    R使用经常是在命令行逐行输入命令(程序), 结果紧接着显示在命令后面。 如何保存这些命令和显示结果? 在R命令行中运行过的命令会被保存在运行的工作文件夹中的一个名为.Rhistory的文件中。 用sink()函数打开一个文本文件开始记录文本型输出结果。 结束记录时用空的sink()即可关闭文件不再记录。

  • cat()函数显示

    log10(2)=*** log10(5)=***

    其中***应该代以实际函数值。

  • sink()函数开始把运行过程记录到文件“log001.txt”中,在命令行试验几个命令,然后关闭运行记录,查看生成的“log001.txt”的内容。

  • 代表该行显示的第一个向量元素的下标。如

    在命令行中定义的变量, 在退出R时,会提问是否保存工作空间, 初学时可选择保存, 真正用R进行数据分析时往往不保存工作空间。 如果退出时保存了工作空间, 再次启动R后, 能够使用以前定义的各个变量以及自定义函数。

    在使用R的官方版本时, 如果在MS Windows中使用, 一般把不同的数据分析项目放在不同的文件夹中。 将R的程序快捷图标复制到每一个项目的文件夹中, 并用右键菜单讲快捷图标的“属性”中“起始位置”改为空白。 要分析哪一个项目的数据, 就从那个项目文件夹中的R快捷图标启动, 这样可以保证不同的项目有不同的工作空间。

    如果使用RStudio软件, 也需要把不同项目放在不同文件夹, 并且每个项目在RStudio中单独建立一个“项目”(project)。 要分析那个项目的数据, 就打开那个项目。 不同项目使用不同的工作空间。

    RStudio中的“Environment”窗格会显示当前已定义的R变量与函数。

    2.7.1 练习

  • 某人存入10000元1年期定期存款,年利率3%, 约定到期自动转存(包括利息)。列出1、2、……、10年后的本息金额。
  • 显示2的\(1,2,\dots,20\)次方。
  • 定义x1为1到10的向量,定义x2为x1的3倍,然后退出R,再次启动R,查看x1和x2的值。
  • 用Excel软件查看“taxsamp.csv”的内容(双击即可)。

  • 用记事本程序或notepad++软件查看“taxsamp.csv”的内容。

  • 读入“taxsamp.csv”到R数据框tax.tab中,查看tax.tab内容。

  • 2.9.4 分类变量频数统计

    在tax.tab中, “征收方式”是一个分类变量。 用table()函数计算每个不同值的个数,称为频数(frequency):

    数值型变量可以计算各种不同的统计量, 如平均值、标准差和各个分位数。 summary() 可以给出最小值、最大值、中位数、四分之一分位数、四分之三分位数和平均值。如

    用如下程序定义一个变量x, 然后求x的平均值和最小值、最大值。

    source() 函数可以运行保存在一个文本文件中的源程序。 比如,如下内容保存在文件 ssq.r 中:

    源程序文件存在编码问题。 对于源程序编码与系统默认编码不同的情况, 在source()函数中可以添加encoding=选项。 保存为UTF-8编码的源程序在简体中文MS Windows系统的R中运行, 可以在source()函数中可以添加encoding="UTF-8"选项。 保存为GBK编码的源程序文件在MAC系统的R中运行, 可以在source()函数中可以添加encoding="GBK"选项。

    在RStudio中, 可以打开一个源程序文件查看与编辑。 用快捷键“Ctrl+Enter”或快捷图标“Run”可以运行当前行或者加亮选中行, 快捷图标“Source”可以运行整个文件。 如果发现中文乱码, 可以用菜单“Reopen with encoding”选择合适的编码打开, 用菜单“Save with encoding”选择需要的编码保存。

    2.10.2 当前工作目录

    在用source()调用源程序文件或者用read.csv()读入数据文件时, 如果不写文件名的全路径, 就认为文件位置是在所谓“当前工作目录”。 用getwd()函数可以查询当前工作目录, 用setwd()函数可以设置当前工作目录。 在RStudio中用菜单“Session–Set working directory”设置当前工作目录。

    在MS Windows操作系统中使用R软件时, 一种好的做法是把某个研究项目所有数据和程序放在某个文件夹如 c:\work中, 把R的程序快捷图标复制到该目录中, 在资源管理器中对该图标调用鼠标右键菜单“属性”, 从弹出对话框中,把“起始位置”一栏清除。 这样,每次从这个快捷图标启动R, 就可以自动以所在子目录为当前工作目录, 工作空间和命令历史记录也默认存放在这里。

    在MS Windows操作系统的R中使用文件路径时, 要用正斜杠作为连接符, 使用反斜杠则需要成对使用, 如setwd("d:/work")setwd("d:\\work")

    如果使用RStudio软件, 将某个研究项目所有数据和程序放在某个文件夹中, 然后建立一个新项目(project)指向该文件夹。

    2.10.3 练习

    编辑生成ssq.r源程序文件并用source()函数运行, 然后计算:

    2.11.1 公司纳税数据样例

    本数据是某地区2013年12月所属税款申报信息的一个子集, 仅含20个公司的数据。

    数据文件显示