报错:mstd(X, window, [minPeriods]). window must be at least 2.是什么原因?

您好,想请问一个问题,使用arrayvector时不知道错误出在哪里,代码如下:

t = table(1:0, `Id`Factor`DataSource`Parameter, [INT, STRING, STRING, DOUBLE[]]);
insert into t values(0, "f1", "tt", [[100, 14, 14]]);

Date = 2021.01.02 2021.01.02  2021.01.04  2021.01.05 2021.01.07 2021.01.08
X = 1 4 10 -1 2 4
tt = table(Date,X as x)
def f1(tt, params){
 a = select Date, mstd(x,params[0]), mstd(x,params[1]), mstd(x,params[2]) from tt ;  
 return a
}

def f(func_name, table_name, params){
 return funcByName(func_name)(objByName(table_name), params);
}
each(f, t.Factor, t.DataSource, t.Parameter)

报错信息如下:each(f, t."Factor", t."DataSource", t."Parameter") => f: return funcByName(func_name) ( objByName(table_name), params ) => f1: a = select Date,mstd(x, params[0]) as mstd_x from tt => Usage: mstd(X, window, [minPeriods]). window must be at least 2.

请先 登录 后评论

1 个回答

Shena Mao

原本的params里的数据类型是double类型,改成int类型就可以了

函数mstd里的参数是INT类型。

修改如下即可:

def f1(tt, params){
a = select Date, mstd(x,int(params[0])) as mstd1, mstd(x,int(params[1])) as mstd2, mstd(x,int(params[2])) as mstd3 from tt ;
 return a
}
请先 登录 后评论