【问题标题】:DolphinDB error: mstd(X, window, [minPeriods]). window must be at least 2DolphinDB 错误:mstd(X, window, [minPeriods])。窗口必须至少为 2
【发布时间】:2022-01-19 06:25:52
【问题描述】:

我写的代码是:

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 = 选择 Date,mstd(x, params[0]) as mstd_x from tt => 用法:mstd(X, 窗口,[minPeriods])。窗口必须至少为 2。

我在列中使用 arrayvector 来创建表,不确定是否是问题所在。我该如何解决?

【问题讨论】:

    标签: dolphindb


    【解决方案1】:

    你代码中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
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多