在构建 JMP 插件时,我在 JMP 到 R 界面上做了很多工作, JMP 到 R 自定义插件生成器. 因此,如果您想了解如何开始使用 JSL 进行 JMP 到 R 连接,那么您来对地方了!
我提倡通过示例学习而不是记忆 API,所以让我们从通过 R 往返数据的示例开始,然后返回JMP . 您需要将数据从 JMP 发送到 R,在 R 中执行操作,并将结果返回给 JMP。 因此,您的脚本的主干应如下所示:
//initializes the R interfaces
R Init();
//send data to R
R Send(/*name of JMP object you want to send to R, i.e. data table, list, matrix, string, or numeric*/);
//or
R Send File(/*path to the file you want to send here, as a string*/);
//perform calculations in R
R Submit(/*code you want to execute in R here, as a string*/);
//or
R Submit File(/*path to the file that contains the R code you want to execute*/);
//return data from R
varName = R Get(/*name of object you want to return from R*/);
//terminates the R interfaces
R Term();
或者,也许您想在一行中完成所有操作,这相当于R发送()为您的变量名称一一列出, R提交()对于您的代码,以及R 获取()对于 R 变量一一:
R Execute(/*list of R input var names*/, /*list of R output var names*/, "\[your R code to submit]\");
我见过的一个常见问题是,“有什么区别R发送()和R提交() ?
R发送()将数据结构发送到 R — 五个选项是数据表、列表、矩阵、字符串和数字。
R提交()相比之下,将 R 代码作为字符串提交给您要执行的 R。 如果代码不包含引号,您可以将代码编写为字符串或使用转义它“\[ 代码 ]\” .
一旦你有了这个主干,一个问题仍然存在:你如何以你可以使用的格式获得 R 输出?
答案是:视情况而定。
如果要打开从 R 中检索到的数据表,可以使用以下命令:
R Get(/*name of R variable that contains data table*/) << new data view;
这将打开 JMP 中的数据表。
如果要在现有 JMP 数据表中追加列,可以使用:
varName = R Get(/*name of R variable that contains list with values*/);
dt << New Column(/*name of new column*/, /*column data type, e.g. Character, Numeric*/, Values(varName));
如果你想展示最最近生成的 R 图,您可以使用:
R Get Graphics(/*either png or jpg*/);
要在 JMP 窗口中查看此图像,请使用:
New Window("My Plot", R Get Graphics(/*either png or jpg*/));
还有其他输出选项,其中一些包含在此掌握 JMP 网络广播.
一个非常重要的注意事项:执行操作时,例如R 获取() , R 变量名必须是作为 JSL 表达式的名称(即不是字符串)。 R 获取(“变量”) ,这是不正确的,不等于R 获取(变量) , 哪个是对的。
最后,我在使用 JMP to R 接口时遇到的一个问题是我依赖用户输入来确定这些函数的参数。 在这种情况下,我会使用评估(解析())运行这些 JMP 到 R 接口命令。 例如:
Eval(Parse(varName || " = R Get(" || userInputValue || ");"));
或者
Eval(Parse("dt << New Column(userInputForColumnName, " || userInputForColumnType || ", Values(" || stringNameOfListVariable || "));"));
除这些以外的其他 JMP 到 R 功能( R 连接() , R 控制()等)可以在脚本索引中找到。
祝你好运! 我很想听听你对JMP到下面的评论中的R接口。