【发布时间】:2014-05-15 22:59:38
【问题描述】:
我正在尝试通过一些示例代码来学习一些关于 SAS IML 编程的知识。我想知道是否有人可以帮助解释这个声明发生了什么?
z=((x=1)*((y=4) || (y=6)));
其中,x 可以是 0 或 1,y 可以是 1-100
【问题讨论】:
标签: variables sas variable-assignment
我正在尝试通过一些示例代码来学习一些关于 SAS IML 编程的知识。我想知道是否有人可以帮助解释这个声明发生了什么?
z=((x=1)*((y=4) || (y=6)));
其中,x 可以是 0 或 1,y 可以是 1-100
【问题讨论】:
标签: variables sas variable-assignment
这是一个创建矩阵的语句。
首先,请了解声明式=(在您的情况下为z=)右侧的任何= 类型语句(例如,在您的情况下为x=1)都是逻辑语句,它们返回0 为false 和1 为真。
因此,x=1、y=4 和 y=6 都将计算为一个 1x1 矩阵,其中包含 0 或 1。
其次,|| 是矩阵的水平串联。由于两边的'||'将解析为 1x1 矩阵,整个语句 ((y=4) || (y=6)) 将解析为 1x2 矩阵。
例如,如果 y=4,这将解析为:
( [1] || [0] ) 然后将解析为 [1 0]
最后,* 是一个乘法运算符。所以在这里你将两个矩阵相乘。一个是 1x1 矩阵(来自(x=1)),另一个是如上所述的 1x2。
假设 x=1,整个事情变成:
z=([1] * [1 0]) 最终成为 z=[1 0]
【讨论】: