下面是从一个更大的整体中摘录的示例代码。我试图计算向量beta
和Xtempj
的点积,这应该是一个标量,然后将得到的标量乘以另一个标量Ycoded(j,1)
。
但是,在temp1(j,1)
的赋值语句中,我收到一条错误消息"Type mismatch"。
选项显式
Sub XX()
Dim beta As Variant
Dim temp1 As Variant
Dim X5 As Variant
Dim Xtempj As Variant
Dim Ycoded As Variant
ReDim beta(1 To 2, 1 To 1)
ReDim X5(1 To 2, 1 To 2)
ReDim temp1(1 To 2, 1 To 1)
ReDim Xtempj(1 To 2, 1 To 1)
ReDim Ycoded(1 To 2, 1 To 1)
beta(1, 1) = 0.510825624
beta(2, 1) = 0
X5(1, 1) = 1
X5(1, 2) = 45
X5(2, 1) = 1
X5(2, 2) = 76
Ycoded(1, 1) = 1
Ycoded(2, 1) = 0
For j = 1 To 2
For k = 1 To 2
Xtempj(k, 1) = X5(j, k)
Next k
temp1(j, 1) = WorksheetFunction.MMult(Application.Transpose(beta), Xtempj) * Ycoded(j, 1)
Next j
End Sub
此错误消息使我认为VBA将Ycoded(j,1)
视为1 x 1数组。因此,我也尝试了以下说法:
temp1(j, 1) = WorksheetFunction.MMult(WorksheetFunction.MMult(Application.Transpose(beta), Xtempj), Ycoded(j, 1))
然而,在这里我收到了"无法获取WorksheetFunction类的MMult属性"。
我可以在睡眠中用R或SAS Proc IML做这种事情,所以这非常令人沮丧。如有任何帮助/见解,我们将不胜感激。
最佳,
Dan
对于所示的partit实例,它被视为正在返回的数组,因此希望您索引到该数组中,例如
temp1(j, 1) = Ycoded(j, 1) * WorksheetFunction.MMult(Application.Transpose(beta), Xtempj)(1)
否则,MMULT要求一个数组中的行数与另一个数组的列数相等。
CCD_ 6正在产生一个变体(1比1(。您可以使用(1(对其进行索引以访问该值。