• 44.2.1 cppFunction() 转换简单的C++函数—Fibnacci例子
  • 44.2.2 sourceCpp() 转换C++程序—正负交替迭代例子
  • 44.2.3 sourceCpp() 转换C++源文件中的程序—正负交替迭代例子
  • 44.2.4 sourceCpp() 转换C++源程序文件—卷积例子
  • 44.2.5 在Rmd文件中使用C++源程序文件
  • 45 R与C++的类型转换
  • 45.1 wrap() 把C++变量返回到R中
  • 45.2 as() 函数把R变量转换为C++类型
  • 45.3 as() wrap() 的隐含调用
  • 46 Rcpp 属性
  • 46.1 Rcpp属性介绍
  • 46.2 在C++源程序中指定要导出的C++函数
  • 46.3 在R中编译链接C++代码
  • 46.4 Rcpp属性的其它功能
  • 46.4.1 自变量有缺省值的函数
  • 46.4.2 允许用户中断
  • 46.4.3 把R代码写在C++源文件中
  • 46.4.4 在C++中调用R的随机数发生器
  • 47 Rcpp提供的C++数据类型
  • 47.1 RObject类
  • 47.2 IntegerVector类
  • 47.2.1 IntegerVector示例1:返回完全数
  • 47.2.2 IntegerVector示例2:输入整数向量
  • 47.3 NumericVector类
  • 47.3.1 示例1:计算元素 \(p\) 次方的和
  • 47.3.2 示例2: clone 函数
  • 47.3.3 示例3:向量子集
  • 47.4 NumericMatrix类
  • 47.4.1 示例1:计算矩阵各列模的最大值
  • 47.4.2 示例2:把输入矩阵制作副本计算元素平方根
  • 47.4.3 示例3:访问列子集
  • 47.5 Rcpp的其它向量类
  • 47.5.1 Rcpp的LogicalVector类
  • 47.5.2 Rcpp的CharacterVector类型
  • 47.6 Rcpp提供的其它数据类型
  • 47.6.1 Named类型
  • 47.6.2 List类型
  • 47.6.3 Rcpp的DataFrame类
  • 47.6.4 Rcpp的Function类
  • 47.6.5 Rcpp的Environment类
  • 48 Rcpp糖
  • 48.1 简单示例
  • 48.2 向量化的运算符
  • 48.2.1 向量化的四则运算
  • 48.2.2 向量化的二元逻辑运算
  • 48.2.3 向量化的一元运算符
  • 48.3 用Rcpp访问数学函数
  • 48.4 返回单一逻辑值的函数
  • 48.5 返回糖表达式的函数
  • 48.6 R与Rcpp不同语法示例
  • 49 用Rcpp帮助制作R扩展包
  • 49.1 不用扩展包共享C++代码的方法
  • 49.2 生成扩展包
  • 49.2.1 利用已有基于Rcpp属性的源程序制作扩展包
  • 49.2.2 DESCRIPTION文件
  • 49.2.3 NAMESPACE文件
  • 49.3 重新编译
  • 49.4 建立C++用的接口界面
  • 50 R编程例子
  • 50.1 R语言
  • 50.1.1 用向量作逆变换
  • 50.1.2 斐波那契数列计算
  • 50.1.3 穷举所有排列
  • 50.1.4 可重复分组方式穷举
  • 50.1.5 升降连计数
  • 50.1.6 高斯八皇后问题
  • 50.2 概率
  • 50.2.1 智者千虑必有一失
  • 50.2.2 圆桌夫妇座位问题
  • 50.3 科学计算
  • 50.3.1 城市间最短路径
  • 50.3.2 Daubechies小波函数计算
  • 50.3.3 房间加热温度变化
  • 50.4 统计计算
  • 50.4.1 线性回归实例
  • 50.4.2 核回归与核密度估计
  • 50.4.3 二维随机模拟积分
  • 50.4.4 潜周期估计
  • 50.4.5 ARMA(1,1)模型估计
  • 50.4.6 VAR模型平稳性
  • 50.4.7 贮存可靠性评估
  • 50.5 数据处理
  • 50.5.1 小题分题型分数汇总
  • 50.5.2 类别编号重排
  • 50.6 文本处理
  • 50.6.1 用R语言下载处理《红楼梦》htm文件
  • 51 使用经验
  • 51.1 文件管理
  • 51.1.1 文件备份
  • 51.1.2 工作空间
  • 51.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
  • 编著:李东风
  • stringr::str_c()用来把多个输入自变量按照元素对应组合为一个字符型向量, 用sep指定分隔符,默认为不分隔。 类似于R中向量间运算的一般规则, 各自变量长度不同时短的自动循环使用。 非字符串类型自动转换为字符型。

    40.4.1 format()函数

    format()函数可以将一个数值型向量的各个元素按照统一格式转换为字符型,

    format()函数无法精确控制输出长度和格式。 sprintf是C语言中sprintf的向量化版本, 可以把一个元素或一个向量的各个元素按照C语言输出格式转换为字符型向量。 第一个自变量是C语言格式的输出格式字符串, 其中%d表示输出整数,%f表示输出实数, %02d表示输出宽度为2、不够左填0的整数, %6.2f表示输出宽度为6、宽度不足时左填空格、含两位小数的实数,

    比如,标量转换

    许多脚本型程序设计语言都有在字符串的内容中插入变量值的功能, R本身不具有这样的功能, sprintf()函数有类似作用但只是一个不方便使用的副作用。

    stringr::str_glue()stringr::str_glue_data()提供了字符串插值的功能。 只要在字符串内用大括号写变量名, 则函数可以将字符串内容中的变量名替换成变量值,如:

    stringr::str_length(string)求字符型向量string每个元素的长度。 一个汉字长度为1。

    stringr::str_sub(string, start, end)字符串字串, 用开始字符位置start和结束字符位置end设定字串位置。 用负数表示倒数位置。 默认开始位置为1, 默认结束位置为最后一个字符。

    40.7.1 大小写

    stringr::str_to_upper(string)将字符型向量string中的英文字母都转换为大写。 类似函数有stringr::str_to_lower(string)转换为小写, stringr::str_to_title(string)转换为标题需要的大小写, stringr::str_to_scentence(string)转换为句子需要的大小写。 这都是针对英文的, 选项locale用来选语言,locale="en"为默认值。

    基本R的toupper()将字符型向量的每个元素中的小写字母转换为大写, tolower()转小写。

    40.7.2 字符变换表

    基本R的chartr(old, new, x)函数指定一个字符对应关系, 旧字符在old中,新字符在new中,x是一个要进行替换的字符型向量。 比如,下面的例子把所有!替换成.,把所有;替换成,

    stringr::str_trim(string, side)返回删去字符型向量string每个元素的首尾空格的结果, 可以用side指定删除首尾空格("both")、开头空格("left")、末尾空格("right")。

    stringr::str_trunc(x, width)可以截短字符串。

    stringr::str_wrap(x, width)可以将作为字符型向量的长字符串拆分成近似等长的行, 行之间用换行符分隔。

    40.7.5 排序

    基本R函数sort()可以用来对字符型向量的各个元素按照字典序排序, 但是字符的先后顺序是按照操作系统的当前编码值次序, 见关于locales的帮助。

    str_sort(x)对字符型向量x排序。 可以用locale选项指定所依据的locale, 不同的locale下次序不同。 默认为"en"即英语, 中国大陆的GB编码(包括GBK和GB18030)对应的locale是"zh"

    str_order(x)返回将x的各个元素从小到大排序的下标序列。

    40.8 简单匹配与查找

    40.8.1 开头和结尾匹配

    基本R的startsWith(x, prefix)可以判断字符型向量x的每个元素是否以prefix开头, 结果为一个与x长度相同的逻辑型向量。如

    函数grep(), grepl()等可以用于查找子字符串, 位置不限于开头和结尾, 详见§41.1

    grepl()函数中加fixed=TRUE选项表示查找一般文本内容(非正则表达式)。 比如,查找字符串中是否含有our:

    stringr包的str_replace_all(string, fixed(pattern), replacement)在字符型向量string的每个元素中查找子串pattern, 并将所有匹配按照replacement进行替换。

    stringr::str_split(string, pattern)对字符型向量string的每一个元素按分隔符pattern进行拆分, 每个元素拆分为一个字符型向量,结果是一个列表,列表元素为字符型向量。 其中pattern是正则表达式, 为了按照固定模式拆分,用fixed()进行保护。如

    文本文件是内容为普通文字、用换行分隔成多行的文件, 与二进制文件有区别, 二进制文件中换行符没有特殊含义, 而且二进制文件的内容往往也不是文字内容。 二进制文件的代表有图片、声音, 以及各种专用软件的的私有格式文件, 如Word文件、Excel文件。

    对于文本文件,可以用readLines()函数将其各行的内容读入为一个字符型数组, 字符型数组的每一个元素对应于文件中的一行, 读入的字符型数组元素不包含分隔行用的换行符。

    最简单的用法是读入一个本地的文本文件, 一次性读入所有内容,用如

    15.6