【问题标题】:what does this statement do in SAS IML?这个语句在 SAS IML 中做了什么?
【发布时间】: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


    【解决方案1】:

    这是一个创建矩阵的语句。

    首先,请了解声明式=(在您的情况下为z=)右侧的任何= 类型语句(例如,在您的情况下为x=1)都是逻辑语句,它们返回0 为false 和1 为真。

    因此,x=1y=4y=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]

    【讨论】:

    • 什么是单管而不是双管?
    • 表示逻辑或比较。
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多