【问题标题】:Passing a resolved SAS macro variable through R通过 R 传递已解析的 SAS 宏变量
【发布时间】:2017-09-27 23:05:23
【问题描述】:

我正在生成一个经历了相当长的旅程的 PDF。首先,SAS 宏创建一个 .txt 文件,该文件被读入 R,然后输出为最终的 PDF。我想通过 SAS 运行我的 R 程序,但我需要将 SAS 中引用的文件路径传递给 R。我已经研究过使用“rawr”包,但这没有通过已解决通过 R 的 SAS 宏变量。任何见解将不胜感激。我会探索任何途径。 谢谢!

【问题讨论】:

  • 请显示说明问题的代码示例。听起来像您编写 SAS 代码,并从 SAS 调用 R。应该没问题。
  • 您有 SAS/IML 许可吗?您可以直接在 IML 中运行 R 并将宏传递给 R 变量。
  • 昆汀,我不确定我在解释我想要做什么方面做得很好。我熟悉通过 SAS 调用 R。但是,我不熟悉将解析的 SAS 宏变量传递给 R。本质上,我需要提取一个 SAS 宏变量以放置在我的 Rmarkdown 代码中间。这个宏变量是一个文件路径,它是动态变化的。这可能吗?

标签: r macros sas parameter-passing


【解决方案1】:

正如 Quentin 所说,您可以使用 SAS/IML 接口将信息从 SAS 传递到 R。在 SUBMIT 行中,您可以放置​​任何 SAS/IML 变量,并且在 SAS 将程序发送到 R 之前,该变量的值将被替换(作为文本)到 SAS 程序中。The SAS/IML documentation contains examples.

如果要将宏值发送到 R,首先将其存储到 SAS/IML 变量中,然后将 SAS/IML 变量的值传递给 R ,如下:

%let path = C:/Temp/Path1;
proc iml;
path1 = "&path";   /* copy to character string */
submit path1 / R; 
    theSASpath <- "&path1"
    theSASpath
endsubmit;

如果程序运行时宏变量的值发生变化,只需重新运行“path =”和SUBMIT语句即可更新路径的R副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多