gpt4 book ai didi

r - 如何在 R 中使用宏变量? (类似于 SAS 中的 %LET)

转载 作者:行者123 更新时间:2023-12-04 13:08:12 24 4
gpt4 key购买 nike

如何在 R 中分配宏变量?

在 SAS 中,我将使用以下代码

%LET DEPVAR = sales_ind

PROC REG DATA=mydata;
MODEL &DEPVAR = VAR1 + VAR2;
RUN;

但是,在 R 中,我正在努力做类似的事情(这不起作用)
depvar <<- sales_ind

reg<-lm(depvar ~ var1 + var2, data=mydata)

有任何想法吗?

谢谢!

最佳答案

让我提供一个替代解决方案,因为没有必要通过必须解析的字符串在概念上绕道而行:

R 允许您在运行时操作表达式(无需将它们编码为字符串),通过一组函数,例如 substitute bquote . bquote可能最接近 SAS 方法:

depvar = quote(sales.int)
reg = lm(bquote(.(depvar) ~ var1 + var2), mydata)
bquote本质上采用 R 表达式,并替换由 .(…) 包围的每个变量以其值(value)。第一行为变量分配一个名称——这与 SAS 中的实际宏非常相似。这个需要被 quote包围, 因为否则 R 会尝试分配 sales.int 的内容至 depvar ,而不是它的名字。 quote 工作原理与 bquote 相同,除了您不能使用 .(…)其中的语法来替换现有变量。

您还可以从用户输入(即从字符串中,通过使用 as.name 来确定此名称:
depvar = as.name('sales.int')

as.name 将字符串转换为 R 对象名称。

只是对语言设计的评论,因为这是一个常见的误解:在这方面,R 可能不如 SAS 直观,但它在概念上更加一致且普遍适用。非 R 统计包本质上提供了绕过语言的技巧,而 R 将公式精美地集成到语言本身中。

关于r - 如何在 R 中使用宏变量? (类似于 SAS 中的 %LET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com