# process.r 库模块帮助文档

<details>  <summary>调用参数说明</summary>  <p>
如果参数 @1 不是表，则所有参数先置入数组，数组中的表对象转换为 JSON。
如果参数 @1 不是以 -- 开始的字符串，则添加 process.r.options 中指定的默认选项。

aardio  将自动合成命令行，按需在首尾添加双引号并处理必要的转义。
但启用驼峰参数名自动转连字符格式（加--前缀），并以 = 号分隔名值对，省略 true 值。

process.r 中所有创建 R 进程的函数传启动参数都遵守此规则。
可用 R 或 R.utils 包提供的 commandArgs 解析收到的参数。
</p></details>

## process 成员列表 <a id="process" href="#process">&#x23;</a>

### process.r() <a id="process.r" href="#process.r">&#x23;</a>
运行 RScript.exe，  
成功 process.popen 对象，失败返回 null,错误输出信息，  

如果参数 @1 不是表，则所有参数先置入数组，数组中的表对象转换为 JSON。  
如果参数 @1 不是以 -- 开始的字符串，则添加 process.r.options 中指定的默认选项。  

aardio 将自动合成命令行，按需在首尾添加双引号并处理必要的转义。  
但启用驼峰参数名自动转连字符格式（加--前缀），并以 = 号分隔名值对，省略 true 值。  

可用 process.r.workDir 指定默认工作目录

[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

## process.r 成员列表 <a id="process.r" href="#process.r">&#x23;</a>

R 语言扩展库，  
运行 R 代码时，如果没有 R 语言环境将自动下载安装

### process.r.code <a id="process.r.code" href="#process.r.code">&#x23;</a>

```aardio
process.r.code = /***  
/*请输入要执行的 R 代码，支持 aardio 模板语法。  
执行进程并等待结束，使用 process.r.logger 回显输出。*/  
***/
```

### process.r.codepage <a id="process.r.codepage" href="#process.r.codepage">&#x23;</a>
指定 R 编译器进程默认代码页，设为空值使用系统默认代码页，  
Win10以及更新的操作系统默认值为 65001，  
R 4.2 开始在 Win10以及更新的操作系统使用 UTF-8 编码（代码页 65001）

### process.r.exec <a id="process.r.exec" href="#process.r.exec">&#x23;</a>
执行 R 代码，并等待完成。  
成功返回进程输出，出错返回 null, 错误输出。  
返回 JSON 时不解析，改用 json 函数可解析返回 JSON

### process.r.exec(code,...) <a id="process.r.exec" href="#process.r.exec">&#x23;</a>
参数 @code 可以是 R 代码或 R 代码文件路径。  
如果参数 @2 不是表，则所有参数先置入数组，数组中的表对象转换为 JSON。  
aardio 将自动合成命令行，按需在首尾添加双引号并处理必要的转义。  
但启用驼峰参数名自动转连字符格式（加--前缀），并以 = 号分隔名值对，省略 true 值。  
在 R 语言中请用 args <- commandArgs(T) 取参数，  
用 R.utils 提供的 commandArgs 解析命名参数，用 jsonlite 包解析 JSON。

### process.r.existPath() <a id="process.r.existPath" href="#process.r.existPath">&#x23;</a>
查找 R 安装目录，并检测否存在参数@1指定的子目录，  
如果存在返回完整路径。  
不指定参数返回 R 安装目录根目录

### process.r.getScriptPath() <a id="process.r.getScriptPath" href="#process.r.getScriptPath">&#x23;</a>
返回 Rscript.exe 路径

### process.r.json <a id="process.r.json" href="#process.r.json">&#x23;</a>
执行 R 代码，并等待完成。  
成功返回解析进程输出的 JSON，解析失败则直接返回进程输出。  
出错返回 null, 错误输出。

### process.r.json(code,...) <a id="process.r.json" href="#process.r.json">&#x23;</a>
参数@code 可以是 R 代码或 R 代码文件路径。  
如果参数 @1 不是表，则所有参数先置入数组，数组中的表对象转换为 JSON。  
aardio 将自动合成命令行，按需在首尾添加双引号并处理必要的转义。  
但启用驼峰参数名自动转连字符格式（加--前缀），并以 = 号分隔名值对，省略 true 值。  
在 R 语言中请用 args <- commandArgs(T) 取参数，  
用 R.utils 提供的 commandArgs 解析命名参数，用 jsonlite 包解析 JSON。

### process.r.loadcode() <a id="process.r.loadcode" href="#process.r.loadcode">&#x23;</a>
[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.r.loadcode(code,...) <a id="process.r.loadcode" href="#process.r.loadcode">&#x23;</a>
使用 aardio 模板语法加载 R 代码。  
此函数返回 process.popen 对象。  
参数 code 可以是 aardio 代码或 aardio 代码文件路径。  
如果参数 @1 不是表，则所有参数先置入数组，数组中的表对象转换为 JSON。  
如果参数 @1 不是以 -- 开始的字符串，则添加 process.r.options 中指定的默认选项。  

aardio 将自动合成命令行，按需在首尾添加双引号并处理必要的转义。  
但启用驼峰参数名自动转连字符格式（加--前缀），并以 = 号分隔名值对，省略 true 值。  
在 R 语言中请用 args <- commandArgs(T) 取参数，  
用 R.utils 提供的 commandArgs 解析命名参数，用 jsonlite 包解析 JSON。

### process.r.logger <a id="process.r.logger" href="#process.r.logger">&#x23;</a>
指定 process.r.require 的默认回显对象。  
回显对象必须有 log 或 write 成员函数。  
可指定 console 或 winform.edit 等控件对象。

### process.r.options <a id="process.r.options" href="#process.r.options">&#x23;</a>
应指定为 null 或包含运行 RScript.exe 默认选项参数的数组，  
默认值为 {"--vanilla"}

### process.r.repos <a id="process.r.repos" href="#process.r.repos">&#x23;</a>
修改安装包的镜像服务器。  
默认为 "https://mirrors->ustc->edu->cn/CRAN/"

### process.r.require("字符串参数") <a id="process.r.require" href="#process.r.require">&#x23;</a>
如果指定的 R 包未安装，则安装该包，  
可指定一个或多个要安装的包名参数。  
如果参数指定的包都已安装则返回 true，失败返回 null,错误信息。

### process.r.require() <a id="process.r.require" href="#process.r.require">&#x23;</a>
[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.r.setLibPaths() <a id="process.r.setLibPaths" href="#process.r.setLibPaths">&#x23;</a>
参数可用一个数组指定默认的 R 包搜索目录，可使用环境变量。  
不建议指定需要管理权限才能读写的 R 安装目录，  
默认包目录为 { "%localappdata%/aardio/std/r/site-library" }

### process.r.start <a id="process.r.start" href="#process.r.start">&#x23;</a>
启动 RScript.exe 执行代码或代码文件，返回 process.popen 对象

### process.r.start() <a id="process.r.start" href="#process.r.start">&#x23;</a>
[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.r.start(code,...) <a id="process.r.start" href="#process.r.start">&#x23;</a>
参数 @1 指定R 代码或 R 代码文件路径。  
其他参数可选指定一个或多个启动参数。  
启动参数可以是字符串、数组、表对象，  
由 string.args.joinEx 合成为启动命令行参数。  
参数中出现的表不会转为 JSON ，而是由 string.args 合成为命令行。  
命令行参数在 R 代码中可用 commandArgs 函数获取

### process.r.startRpc <a id="process.r.startRpc" href="#process.r.startRpc">&#x23;</a>
执行 R 代码，并启动 启动 JSON-RPCS 服务端，  
返回 process.rpc.jsonClient 对象

### process.r.startRpc() <a id="process.r.startRpc" href="#process.r.startRpc">&#x23;</a>
[返回对象:processRpcJsonClientObject](#processRpcJsonClientObject)

### process.r.startRpc(code,...) <a id="process.r.startRpc" href="#process.r.startRpc">&#x23;</a>
=参数 @1 指定R 代码，并启动 启动 JSON-RPCS 服务端。  
其他参数可选指定一个或多个启动参数。  
启动参数可以是字符串、数组、表对象，  
由 string.args.joinEx 合成为启动命令行参数。  
参数中出现的表不会转为 JSON ，而是由 string.args 合成为命令行。  
命令行参数在 R 代码中可用 commandArgs 函数获取

### process.r.startRpcSet <a id="process.r.startRpcSet" href="#process.r.startRpcSet">&#x23;</a>
设置 startRpc 创建的 R 语言JSON RPC 服务端 JSON 转换参数。

### process.r.startRpcSet(autoUnbox,simplifyDataFrame,simplifyVector,simplifyMatrix) <a id="process.r.startRpcSet" href="#process.r.startRpcSet">&#x23;</a>
设置 startRpc 创建的 JSON RPC 服务端转换 JSON 的默认参数。  
@autoUnbox 是否自动解包单原子向量，默认为 true。  
@simplifyDataFrame 对象数组是否自动转 R 的数据帧，默认为 true。  
@simplifyVector 原子数组是否自动转 R 的原子向量，默认为 fasle。  
@simplifyMatrix 符合要求的对象数组是否自动转 R 的矩阵，默认为 false。  
@autoUnbox，@simplifyVector 建议保持默认，不然单字符串这些转回来会变成数组。  
如果要设置更多参数，可以将个别有特殊要求的对象传 JSON 文本给 R，  
然后 R 用 fromJSON 函数自己转，可参考 R 语言 jsonlite 文档指定参数。

### process.r.workDir <a id="process.r.workDir" href="#process.r.workDir">&#x23;</a>
工作目录  
默认为 "/" 目录，也就是 aardio 应用程序根目录  
应用程序根目录在开发时指工程目录或工程外的启动代码所在目录，  
发布后指 EXE 目录

### process.r.x86 <a id="process.r.x86" href="#process.r.x86">&#x23;</a>
如果设为 true，则始终运行 32 位 Rscript.exe

## 全局对象 成员列表 <a id="global" href="#global">&#x23;</a>

### setScriptPath() <a id="setScriptPath()" href="#setScriptPath()">&#x23;</a>
可使用参数 @1 自定义 Rscript.exe 的路径，  
如果未指定 Rscript.exe 路径，默认自动获取系统安装的 Rscript.exe 路径
