我正在 proc iml 中编写代码,我想运行一个 if 语句,该语句评估向量的每个分量并返回另一个向量,但只需一步。有什么功能可以这样做吗?这是代码:
proc iml;
use chap0; read all var{X} into X;
read all var{t} into t;
count=0;/*init count number*/
W=1;
s= exp(X*w)/(1+ exp(X*w));
s1=j(5,1,10);
do step = 1 to 6;
count=count+1;
s= exp(X*w)/(1+ exp(X*w));
if s <0.5 then s1= 0; /**in this part I need to get a vector with 0 and 1**/
if s >0.5 then s1= 1; /*I need to evaluate each component of the vector in this step*/
print s s1;
e = ssq(s - t);
g=2*(s-t)*s`*(1-s);
h=2 * s * (1 - s)` * (s * (1 - s)` + (s - t) * (1 - 2 * s)`);
o=j(1,5,1);
gg=(o*g);
hh=((o*h)*o`);
gi=gg/hh;
w1=w-gi;
s= exp(X*w)/(1+ exp(X*w));
if s <0.5 then s1= 0; /**here again:
in this part I need to get a vector with 0 and 1**/
if s >0.5 then s1= 1;
print s1;
e = ssq(s - t);
e1 = ssq(s1 - t);
w=w1;
print w w1 e e1 count;
end;
谢谢!