在DolphinDB database中怎么用动态表达式来计算多个向量

我需要用动态表达式来计算多个向量,n个向量之间的计算关系不确定,用表达式代替,可以下面这样吗?

def calculateExpress( formula,  dataVector)
{
   f=dataVector
   result=parseExpr(formula).eval()
   return result 
}

dataVector=
[
 [1,2],
 [2,3],
 [4,5],
 [6,7]
]
formula="f[0]+f[1]+f[2]+f[3]"
calculateExpress(formula,dataVector)

但运行时报错:
Function definition [f] is not copyable and can't serve as an operand in numeric calculation.
请问有什么办法吗?

请先 登录 后评论

1 个回答

Jason Tang - 时序数据库技术支持

parseExpr之后的表达式,一般都使用在sql语句中,变量就是表。这个问题可以参考元编程教程第2.4节例子,1个向量对应表的1个列,传入一个表和一个表达式,动态生成一个sql语句执行,代码如下:

def calculateExpress( formula,  t){
    return sql(sqlColAlias(parseExpr(formula), "value"), t).eval().value
}

t=table(1 2 as f0, 2 3 as f1, 4 5 as f2, 6 7 as f3)

formula="f0+f1+f2+f3"
calculateExpress(formula,t)
请先 登录 后评论