可以先转成带标签的矩阵,然后利用 cross 函数将两个矩阵的列两两求内积。如果两个矩阵的行标签不完全一致,可以先通过 align 函数进行对齐。参考脚本如下:
tb1=table(`sym1`sym2`sym3`sym4`sym5 as SYMBOL,NULL NULL 1 NULL NULL as block1,NULL 1 NULL NULL NULL as block2,1 NULL NULL 1 NULL as block3,NULL 1 NULL NULL 1 as block4)
tb2=table(`sym1`sym3`sym4 as SYMBOL,1+double(seq(1,3))/10 as col1,2+double(seq(1,3))/10 as col2,3+double(seq(1,3))/10 as col3)
m1 = matrix(tb1[,1:]).rename!(tb1.SYMBOL, tb1.colNames()[1:])
m2 = matrix(tb2[,1:]).rename!(tb2.SYMBOL, tb2.colNames()[1:])
mm1, mm2 = align(m1, m2, 'fj', true)
re = cross(wsum, mm1, mm2)