/ / Použitie RInterface.GetArrayToVBA vo VBA funkcii s poliami - r, excel-vba, rexcel, vba, excel

Používanie funkcie RInterface.GetArrayToVBA vo vnútri funkcie VBA pomocou polí - r, excel-vba, rexcel, vba, excel

Nechajte tabuľku Excel prepojiť s R prostredníctvom RExcel a chcete napísať funkciu VBA, ktorá volá niektoré funkcie R.

V tabuľke programu Excel máte niekoľko jednoduchých polí, ako napríklad tieto:

tu zadajte popis obrázku

Kód by mohol byť takto:

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

a jeho zjavným účelom je vrátiť maticu obsahujúcu cbind(x, y, y ^ x) v Exceli.

Nedokážem to dosiahnuť, dostávam podivné výsledky, keď kód mierne upravujem: výstup sa niekedy rovná 1, niekedy je to rovnaké ako #VALUE!... to však nefunguje a nedokážem pochopiť syntax potrebnú v takom prípade.

odpovede:

2 pre odpoveď č. 1
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

Vynechávam vaše kontroly chýb, pretože spôsobia iba ďalšie chyby. Ak chcete vykonať kontrolu chýb, vykonajte kontrolu chýb.