(SAS) 将函数作为参数传递给函数(或宏)

凯蒂尔·特维滕

在现代语言(例如python)中,您可以执行以下操作

def do_a_thing(foo,bar):
    thing = (... do a thing to foo(bar) ...)
    return thing

在 SAS 中如何做到这一点(或类似的事情)?在我的具体应用我已经定义了一堆的功能,并需要做同样的事情所有的人,所以我认为这将是不错的一个函数,函数的参数,然后做的事情,以该功能,然后在需要的地方应用它。“明显”的解决方案不起作用,例如在proc fcmp这样做时:

function do_a_thing(foo,bar);
    thing = (... do a thing to foo(bar) ...)
return(thing);
endsub;

这将失败,因为 SAS 不知道任何名为 的函数foo,并引发错误。

我希望答案涉及一些宏观技巧,但我发现宏观系统有些不透明,无法完全弄清楚。做到这一点的最佳方法是什么?

汤姆

您还没有真正展示可能需要(甚至有用)的示例。

但通常在 SAS 中,您会使用代码生成来实现这种类型的错误方向。例如,您的第二个“函数”可能是语句样式宏。这是一个宏,它只发出要包含在您要创建的实际 SAS 程序中的语句的一部分。

%macro do_a_thing(function,arglist);
  &function(&arglist)
%mend;

那么你可以在程序中使用它

data want ;
  set have ;
  mean = %do_a_thing(mean,of _numeric_);
  std = %do_a_thing(std,of _numeric_);
run;

对于更复杂的事情,你会遇到更多的麻烦。新式 DOSUBL() 函数可能会有所帮助,因为它们可以让您在单独的执行空间中运行多个步骤。但是对于大多数事情来说,性能成本可能太高而无法让它值得。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将参数传递给SAS宏

来自分类Dev

SAS宏引用:传递等于符号作为宏参数

来自分类Dev

SAS宏,将值作为字符串传递给where子句

来自分类Dev

SAS宏,将值作为字符串传递给where子句

来自分类Dev

如何在SAS中将条件作为宏参数传递

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

SAS 中的宏循环 - 将值传递给条件

来自分类Dev

如何在Macro SAS中将变量的值传递给函数的参数?

来自分类Dev

如何在Macro SAS中将变量的值传递给函数的参数?

来自分类Dev

将矩阵作为参数传递给函数

来自分类Dev

将函数作为参数传递给操作

来自分类Dev

将数组作为参数传递给函数

来自分类Dev

将函数作为参数传递给方法

来自分类Dev

将函数作为参数传递给Action

来自分类Dev

将向量作为参数传递给函数

来自分类Dev

将Java脚本函数作为参数传递给C ++函数

来自分类Dev

将匿名函数作为参数传递给Erlang中的函数?

来自分类Dev

将内联函数定义作为输入参数传递给函数

来自分类Dev

将函数(委托?)传递给期望对象的函数作为参数

来自分类Dev

将R函数作为参数传递给RCpp函数

来自分类Dev

如何将函数作为参数传递给transform()函数?

来自分类Dev

将类成员函数作为参数传递给全局函数

来自分类Dev

将内联函数定义作为输入参数传递给函数

来自分类Dev

将指针传递给成员函数作为void *函数的参数

来自分类Dev

如何将函数作为参数传递给参数?

来自分类Dev

将.sas作为文本导入SAS

来自分类Dev

SAS INTCK 函数毫秒

来自分类Dev

对许多参数执行SAS宏