2

让一个 Excel 电子表格通过RExcel连接到 R,并且您想编写一个调用一些 R 函数的 VBA 函数。

在您的 Excel 电子表格中,您有几个简单的数组,如下所示:

在此处输入图像描述

代码可能是这样的:

Function foo(x As Range, y As Range) As Variant

    RInterface.StartRServer

    If IsNumeric(x) = True Then
        RInterface.PutArrayFromVBA "x", x
    End If

    If IsNumeric(y) = True Then
        RInterface.PutArrayFromVBA "y", y
    End If

    foo = RInterface.GetArrayToVBA("cbind(x, y, y ^ x)")

End Function

它的明显目的是返回一个包含cbind(x, y, y ^ x)在 Excel 中的矩阵。

我无法得到它,当我稍微修改代码时,我得到了奇怪的结果:有时输出等于1,有时它等于#VALUE!......但是它不起作用,而且我无法理解语法在这种情况下需要。

4

1 回答 1

2
Function foo(x As Range, y As Range) As Variant

RInterface.StartRServer
RInterface.PutArrayFromVBA "x", x.Value 'you were missing this .Value'
RInterface.PutArrayFromVBA "y", y.Value
foo = RInterface.GetArrayToVBA("cbind(x, y, y ^ x)")

End Function

我省略了您的错误检查,因为它们只会导致其他错误。如果要进行错误检查,请执行 on error goto

于 2014-09-03T19:09:07.603 回答