在研究了 SPSS 书中的宏部分之后,我仍然无法理解这段代码为什么/如何工作
DEFINE !Combinations (Set = !TOKENS(1)
/Len = !TOKENS(1) )
INPUT PROGRAM.
!LET !Str = " ".
!LET !LisVar = "".
!DO !I = 1 !TO !Len
!LET !Ind = !CONCAT("#",!LENGTH(!Str))
LOOP !Ind = 0 TO !Set.
!LET !Str = !CONCAT(!Str," ")
!LET !LisVar = !CONCAT(!LisVar," ",!Ind)
!DOEND
VECTOR X(!Len).
DO REPEAT L = !LisVar /X = X1 TO !CONCAT("X",!Len).
COMPUTE X = L.
END REPEAT.
END CASE.
!DO !I = 1 !TO !Len
END LOOP.
!DOEND
END FILE.
END INPUT PROGRAM.
EXECUTE.
!ENDDEFINE.
使用以下参数
!Combinations Set = 1 Len = 2.
我会有两个循环(#1 和 #2)从 0 到 1,这会给我以下集合(0,0)(0,1)(1,0)(1,1),但我没有不明白是
i)第一个 !DOEND 不应该在循环之外?
ii) 为什么我需要这个
!DO !I = 1 !TO !Len
END LOOP.
而不是一个简单的END LOOP?