删除数组的某一行,用户可根据列数据的条件进行删除,也可以根据行标进行删除。
1)根据条件删除数组指定行:
//删除列'time'中值为‘2013-12-20’的行数据
EndT:=inttodate(20131220);
setsysparam(pn_date(),EndT);
r:=nday(10,'time',datetostr(sp_time()),'close',close());
EndT_:=datetostr(EndT);
delete from r where ['time']=EndT_;
return r;
2)根据行标进行删除
方法一:
//删除行标为5的数据
{deleteindex(arr,indexID,merge)模型删除指定下标
其中:
arr:数组
indexID:要删除的指定下标值
merge:删除后是否自动合并,如果merge为真,则自动移动后面的数字下标
}
EndT:=inttodate(20131220);
setsysparam(pn_date(),EndT);
r:=nday(10,'time',datetostr(sp_time()),'close',close());
indexID:=5;
mergeflag:=1;
deleteindex(r,indexid,mergeflag);
return r;
方法二:
取子矩阵的方法
//删除行标为5的数据
EndT:=inttodate(20131220);
setsysparam(pn_date(),EndT);
r:=nday(10,'time',datetostr(sp_time()),'close',close());
indexid:=5;
len:=length(r)-1;
return r[0:indexid-1,:] union r[indexid+1:len,:];
方法三:
EndT:=inttodate(20131220);
setsysparam(pn_date(),EndT);
r:=nday(10,'time',datetostr(sp_time()),'close',close());
indexid:=5;
//删掉第indexID行不上移
reindex(r,array(indexid:nil));
//如果要使其他的行上移,则需对indexID后的所有行的行标重新设置
//语法:reindex(r,array(indexID:nil,indexid+1:indexID,indexid+2:indexID+1)....);
reindex(r,array(5:nil,7:6,8:7,9:8));
return r;