(相关资料图)

SAS 编程语言成名已久,这几年尤其在医药行业数据分析领域一骑绝尘,临床数据分析从业者几乎人人都会些 SAS 编程。其中初学者不少,高水平的 SAS 编程爱好者亦如过江之鲫。时至今日,笔者在各路论坛、交流群、博客已见过不少令人苦思冥想或眼前一亮的 SAS 代码,并记于此,一来奇葩应当共赏,二来也提升个人的 SAS 编程水平。

笔者编程水平有限,如有不对之处,还请指正。

以下程序是什么意思?

它是嵌套循环的简略写法吗?

当然不是。原程序实际上利用了 do loop 的特殊语法形式——用逗号隔开多个循环元素(范围),它实际上等价于:

若你还不了解逗号在循环语句中的作用,则可以进一步解构为:

即首先将循环变量 i 从 1 遍历到 7,然后再进行一次循环,循环变量从 0 或 1 遍历到 7,总共进行 15 或 14 次循环。具体按照方式1还是方式2运行,则要看表达式 (j=1) 的解析结果。该表达式返回的布尔类型结果,将作为第二个循环范围的起始值。

由于变量 i 和 j 都常常被用作循环变量,原程序变得富有欺诈性,即便是有经验的程序员,也不容易很快识出程序的真正目的。请注意,不要有意地在生产程序中使用深奥难明程序设计,这会对阅读程序的其他人员带来困扰。

推荐内容