COMadaptR.Exec
This function is called for executing a command.
| Syntax | Parameters | Return Value |
|---|---|---|
Sub COMadaptR.Exec( _
bstrExpression As String)
|
bstrExpression [in]
The R code to execute. Type: String |
This function does not return a value. |
SVB Example
Generating a report from R data & output:
Sub Main
Dim R As New COMadaptR
R.Init
On Error GoTo RErrorHandler
R.Exec("score = c(97, 92, 86, 89, 90, 72, 68, 75, 64, 54)")
R.Exec("name = c('Gabrielle', 'Suzie', 'Jo', 'Francis', 'Emma', 'Tyler', 'Mackenzie', 'Jennifer', 'Stephanie', 'Max')")
R.Exec("df = data.frame(name, score)")
'Retrieve our data from R and format it into a textual table for our report.
Dim textResults As String
'Add a formatted header for this section.
'"\cf2" will indicate the second color from the RTF header's color table [see below],
'"\b" will make it bold, and "\ul" will underline it.
'Note that you must close each RTF tag with a respective "zero" tag (e.g., "\b0"),
'following a FIFO ("first-in, first-out") stack.
textResults = textResults & "\pard\cf2\b\ul RAW SCORES\cf0\b0\ul0\line\line "
Dim dataOutput As Variant
dataOutput = R.Eval("as.matrix(df)") 'Get the data as a 2D text array
Dim i As Long, j As Long
For i = LBound(dataOutput,1) To UBound(dataOutput,1)
For j = LBound(dataOutput,2) To UBound(dataOutput,2)
'Highlight failing grades in red
'("\cf3" indicates the 3rd color in the RTF header's color table).
If CInt(dataOutput(i,1)) < 60 Then
textResults = textResults & "\cf3 " & dataOutput(i,j) & "\cf0 " & vbTab
'Highlight student with 'A' grades in blue.
ElseIf CInt(dataOutput(i,1)) >= 90 Then
textResults = textResults & "\cf4 " & dataOutput(i,j) & "\cf0 " & vbTab
Else
textResults = textResults & dataOutput(i,j) & vbTab
End If
Next
textResults = textResults & "\line "
Next
textResults = textResults & "\par "
'Create a stem & leaf plot from R
Dim vOutput As Variant
vOutput = R.Eval("capture.output(try(stem(df$score), silent = TRUE))")
'The returned stem & leaf will be an array of strings.
'Iterate through these rows of text and put it into the report.
textResults = textResults & "\pard\cf2\b\ul STEM & LEAF\cf0\b0\ul0\line "
For i = LBound(vOutput) To UBound(vOutput)
textResults = textResults & vOutput(i) & "\par "
Next
Dim rpt As New Report
'Add a formatted header to the report.
rpt.SelectionRTF = _
"{\rtf1\ansi\ansicpg1252\deff0\deflang1029" & _
"{\fonttbl{\f0\fnil\fprq4\fcharset0 Arial;}}" & _
"{\colortbl ;\red0\green64\blue64;\red0\green128\blue128;\red255\green0\blue0;\red0\green0\blue200;}" & _
"\uc1\pard\cf1\lang1033\ul\b\f0\fs22 " & _
"Test Scores Report (" & Trim(Str(Date)) & ")\cf0\ul0\b0\par\line " & textResults & "}"
rpt.Visible = True
R.Close
Exit Sub
RErrorHandler:
MsgBox R.GetErrorText
End Sub
Copyright © 2020. Cloud Software Group, Inc. All Rights Reserved.
