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 に答える