在 Minitab Statistical Software 中运行 R 脚本

了解从 Minitab 运行 R 的不同方式。
您可以通过三种方式从 Minitab 运行 R 脚本:
  • 命令行窗格中运行 RSCR 命令。
  • 运行包含 RSCR 命令的 Minitab 可执行文件。
  • 自定义 Minitab 界面以运行包含 RSCR 命令的 Minitab 可执行文件。

RSCR 命令使用 R 扩展 Minitab 的功能,但不会使 Minitab 成为交互式 R 环境。因此,请仅对无需交互即可完成的 R 脚本使用 Minitab。例如,在脚本运行时接受键盘输入的 readline() 函数在 Minitab 中不起作用。R 中的交互性采用许多其他形式,例如 plot()hist()

有关 Minitab 的 R 包(包括 R 代码示例)的详细信息,请转到 R API 引用

以下 .ZIP 文件提供了本指南中引用的所有文件:r_guide_files.zip

注意

在尝试将 R 与 Minitab Statistical Software 集成之前,先安装并运行 R。如需 R 安装方面的协助,请咨询您的组织的技术支持部门。Minitab 技术支持不能协助安装 R

命令行窗格中运行 R 脚本

您可以在命令行窗格中运行 RSCR 命令。有关命令行窗格的一般信息,请转到命令行/历史记录窗格。有关使用会话命令的一般信息,请转到会话命令帮助

RSCR["filename.R"]["Args"...]

运行您指定的 R 脚本。

R 脚本的默认文件扩展名是 .R。如果文件扩展名为 .R,则无需键入文件扩展名。如果您没有指定文件路径,Minitab 将查找默认文件夹中的 R 脚本。默认文件夹位置取决于您的操作系统。有关更多信息,可转到 Minitab 的 R 文件的默认文件夹

可选变元 Args 允许通过 commandArgs(trailingOnly = TRUE) 将变元传递给脚本 RArgs 可以是由空格分隔的任何文本值。用引号将变元括起。默认值为 None,这意味着脚本不会接收任何变元。

通常,您可以使用变元将数据从 Minitab 引入 R。您可以通过多种方式输入变元。例如,可以使用作为列、矩阵或常量的标识符的变元:

Minitab 会话命令 值在 R 用法
RSCR "test.R" "C1"
"C1"
使用以下函数检索列:
mtbr::mtb_get_column(commandArgs(trailingOnly = TRUE)[1])
RSCR "test.R" "M1"
"M1"
使用以下函数检索矩阵:
mtbr::mtb_get_matrix(commandArgs(trailingOnly = TRUE)[1])
RSCR "test.R" "K1"
"K1"
使用以下函数检索常量:
mtbr::mtb_get_constant(commandArgs(trailingOnly = TRUE)[1])

还可以使用作为 Minitab 中列、矩阵或常量的名称的变元:

Minitab 会话命令 值在 R 用法
RSCR "test.R" "My Column"
"My Column"
使用以下函数检索列:
mtbr::mtb_get_column(commandArgs(trailingOnly = TRUE)[1])
RSCR "test.R" "My Matrix"
"My Matrix"
使用以下函数检索矩阵:
mtbr::mtb_get_matrix(commandArgs(trailingOnly = TRUE)[1])
RSCR "test.R" "My Constant"
"My Constant"
使用以下函数检索常量:
mtbr::mtb_get_constant(commandArgs(trailingOnly = TRUE)[1])

还可以指定变元以传递用于 R 代码的文本。可以直接传递文本,也可以采用常量的形式传递。

Minitab 会话命令 值在 R 用法
RSCR "test.R" "Text not Stored"
"Text not Stored"
本例传递的值不能与 mtbr 'get' 命令一起使用。但是,Args 不仅限于传递列、矩阵和常量。
LET K1 = "Text in Constant" RSCR "test.R" K1
"Text in Constant"
本例着重表明,尽管 RSCR 不接受非文本值的变元,但只要将常量定义为文本值,即可将常量传递给 RSCR

传递多个变元时,可以从变元列表中按顺序访问变元:

Minitab 会话命令 值在 R 用法
RSCR "test.R" "C1" "C2" "M1" "K3" "10"
"C1" "C2" "M1" "K3" "10"
本例是传递多个 Args 的示例,您将在此示例使用 R 中的以下函数来访问这些变元:
mtbr::mtb_get_column(commandArgs(trailingOnly = TRUE)[1]) mtbr::mtb_get_column(commandArgs(trailingOnly = TRUE)[2]) mtbr::mtb_get_matrix(commandArgs(trailingOnly = TRUE)[3]) mtbr::mtb_get_constant(commandArgs(trailingOnly = TRUE)[4]) as.numeric(commandArgs(trailingOnly = TRUE)[5])

使用以下文件查看以下子命令的示例文本的输出。确保 test.R 文件位于 Minitab 的 R 脚本文件夹中。
文件 说明
test.R 本指南中使用的 R 脚本示例。将变元传递给脚本时,结果包括变元值的列表。当您使用变元“ArgToBePrintedToStdErr”运行脚本时,该脚本会将变元的名称写入 stderr 文件。当您使用变元“ArgToBePrintedToStdOut”运行脚本时,该脚本会将变元的名称写入 stdout 文件。使用以下子命令控制这些文件的内容是否显示在 Minitab 的“输出”窗格中。
NOSERR
指定在 Minitab“输出”窗格中不显示来自标准误 (message(), warning()stop()) 控制台输出的文本。在 R 集成开发环境中运行代码时,尽管您可以使用 R 将其他结果放入警告文件中,但可以在警告控制台输出中看到 R 错误消息。例如,默认情况下:
RSCR "test.R" "ArgToBePrintedToStdErr". 
生成以下包括警告控制台输出的结果:

R Script

These results are from external software.
The following arguments were passed to R: ArgToBePrintedToStdErr

R standard error

The following arguments were printed to Stderr: 'ArgToBePrintedToStdErr'
以下会话命令排除警告控制台输出:
RSCR "test.R" "ArgToBePrintedToStdErr"; NOSERR.
会话命令生成以下结果:

R Script

These results are from external software.
The following arguments were passed to R: ArgToBePrintedToStdErr
SOUT
指定在 Minitab“输出”窗格中显示来自标准控制台输出 (print()) 的文本。在 R 集成开发环境中,您可以在标准控制台输出中查看 print() 等命令的结果。例如,默认情况下:
RSCR "test.R" "ArgToBePrintedToStdOut". 
生成以下排除控制台输出的结果:

R Script

These results are from external software.
The following arguments were passed to R: ArgToBePrintedToStdOut
以下会话命令包括控制台输出:
RSCR "test.R" "ArgToBePrintedToStdOut"; SOUT.
会话命令生成以下结果:

R Script

These results are from external software.
The following arguments were passed to R: ArgToBePrintedToStdOut

R standard output

[1] "The following arguments were printed to Stdout: 'ArgToBePrintedToStdOut'"

从 Minitab 可执行文件运行 R 脚本

使用以下文件执行本节中的步骤:
文件 说明
test.R 本指南中使用的 R 脚本示例。将变元传递给脚本时,结果包括变元值的列表。
REXEC.MTB 包括会话命令的示例 Minitab 可执行文件,用于运行具有 2 个变元的 test.R 脚本。

可执行文件是包含 Minitab 会话命令的文本文件。您可以在 Minitab 可执行文件中包括运行 RRSCR 命令。使用可执行文件,您可以轻松运行命令,而无需重新键入命令,并且您可以将可执行文件分配给 Minitab 中的自定义按钮。有关 Minitab 可执行文件的详细信息,请转到 Minitab 宏帮助。要运行可执行文件,请选择文件 > 运行可执行文件

假设您创建了可执行文件 REXEC.MTB。可执行文件包含以下 Minitab 命令:
RSCR "test.R" "Arg1" "Arg2"
要使用可执行文件运行 R 脚本,请使用以下步骤:
  1. 选择 文件 > 运行可执行文件
  2. 单击选择文件
  3. 选择 REXEC.MTB
  4. 单击打开
该脚本在 Minitab 中显示变元的值,并且可执行文件生成以下结果:

R Script

These results are from external software.
The following arguments were passed to R: Arg1, Arg2

从 Minitab 界面运行 R 脚本

如果您有 Minitab 可执行文件,则可以创建运行可执行文件的自定义按钮或菜单。有关如何在 Minitab 中自定义界面的一般信息,请转到自定义菜单、工具栏和快捷键

您可以使用以下步骤创建运行可执行文件的自定义按钮:
  1. 选择 查看 > 自定义
  2. 单击工具选项卡。
  3. 工具选项卡上,单击新建 (插入) 按钮
  4. 键入命令的名称,然后按 Enter 键。
  5. 单击打开按钮
  6. 从文件类型下拉列表中,选择所有文件 (*.*)
  7. 浏览并选择可执行文件。
  8. 单击打开
  9. 再次选择查看 > 自定义
  10. 命令选项卡的类别下,选择工具
  11. 打开自定义对话框时,将新命令拖动到您希望其显示在 Minitab 菜单或工具栏上的位置。
  12. 单击关闭

除了自定义 Minitab 的界面,您还可以使用符合 COM 的语言创建自定义对话框和分析。有关如何通过 COM 自定义 Minitab 的信息,请转到 Minitab 自动化

停止 RSCR 命令

您可以停止 R 脚本并保持 Minitab 打开,这样可防止丢失自上次保存后对 Minitab 项目进行的任何编辑。停止 R 脚本的方法取决于您的操作系统。
Windows

Ctrl + Alt + Delete 以打开 Windows 任务管理器。然后,结束 R 进程。