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:
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ď č. 1Function 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.