|
Calling Sequence
|
|
R(x, cgopts)
|
|
Parameters
|
|
x
|
-
|
expression, list, rtable, procedure, or module
|
cgopts
|
-
|
(optional) one or more CodeGeneration options
|
|
|
|
|
Description
|
|
•
|
The R(x, cgopts) calling sequence translates Maple code to R code.
|
|
- If the parameter x is an algebraic expression, then an R statement assigning the expression to a variable is generated.
|
|
- If x is a list, Maple Array, or rtable of algebraic expressions, then a sequence of R statements assigning the elements to an R Array is produced. Only the initialized elements of the rtable or Maple Array are translated.
|
|
- If x is a list of equations , where is a name and is an algebraic expression, then this is understood as a sequence of assignment statements. In this case, the equivalent sequence of R assignment statements is generated.
|
|
- If x is a procedure, then an R class is generated containing a function equivalent to the procedure, along with any necessary import statements.
|
|
- If x is a module, then an R class is generated, as described on the RDetails help page.
|
|
- There is also limited support for the case that x is a command constructor from the Linear Algebra, Statistics or Time Series packages. For supported commands, an equivalent R command is generated. The list of supported commands for Statistics is listed on the RDetails help page.
|
•
|
The parameter cgopts may include one or more CodeGeneration options, as described in CodeGenerationOptions.
|
•
|
For more information about how the CodeGeneration package translates Maple code to other languages, see Translation Details. For more information about translation to R in particular, see RDetails.
|
|
|
Examples
|
|
For a description of the options used in the following examples, see CodeGenerationOptions.
Translate a simple expression and assign it to the name in the target code.
w <- -2 * x * z + y * z + x
| |
Translate a list and assign it to an Array with the name in the target code.
w <- c(c(x,2 * y),c(5,z))
| |
Translate a computation sequence, optimizing the input first:
s <- 0.10e1 + x
t1 <- log(s)
t2 <- exp(-x)
t <- t2 * t1
r <- x * t + t2
| |
Declare that is a float and is an integer and return the result in a string:
Translate a procedure. Assume that all untyped variables have type integer.
>
|
f := proc(x, y, z) return x*y-y*z+x*z; end proc:
|
f <- function(x,y,z)
return(y * x - y * z + x * z)
| |
Translate a procedure containing an implicit return. A new variable is created to hold the return value.
>
|
f := proc(n)
local x, i;
x := 0.0;
for i to n do
x := x + i;
end do;
end proc:
|
f <- function(n)
{
x <- 0.0e0
for(i in 1 : n)
{
x <- x + i
cgret <- x
}
return(cgret)
}
| |
Translate a linear combination of hyperbolic trigonometric functions:
cg0 <- 2 * cosh(x) - 7 * tanh(x)
| |
Translate a procedure with no return value containing a printf statement:
>
|
f := proc(a::integer, p::integer)
printf("The integer remainder of %d divided by %d is: %d", a, p, irem(a, p));
end proc:
|
f <- function(a,p)
print(sprintf("The integer remainder of %d divided by %d is: %d",a,p,a %% p))
| |
Translate a procedure involving routines in linear algebra:
>
|
detHilbert := proc(M, n :: posint) uses LinearAlgebra;
return Determinant( HilbertMatrix( n ) );
end proc:
|
require("Matrix")
detHilbert <- function(M,n)
return(det(Hilbert(n)))
| |
Translate some descriptive statistics commands from the Statistics package:
cg1 <- mean(matrix(c(2,4,8,21),nrow=1,ncol=4))
| |
cg2 <- median(matrix(c(2,4,8,21),nrow=1,ncol=4))
| |
cg3 <- var(c(4,8,15,16,23,42))
| |
cg4 <- scale(c(4,8,15,16,23,42), center = 2, scale = 1)
| |
Translate a procedure that prints values for the mean and standard deviation:
>
|
g := proc( x ) return sprintf("Mean = %.0f\n Standard Deviation = %.0f", 'Statistics:-Mean'(x), 'Statistics:-StandardDeviation'(x) ); end proc:
|
g <- function(x)
return(sprintf("Mean = %.0f\n Standard Deviation = %.0f", mean(x), sd(x)))
| |
Due to different choices for default methods for computing some quantities, some commands may give different results in R than in Maple. For example, when computing certain quantiles, Maple uses method 7 by default whereas R uses method 6. For more details on the methods, see the Data Set Options section of the Quantile help page.
cg5 <- quantile(c(4,8,15,16,23,42), prob = 3/4)
| |
Translate some other summary statistics:
cg6 <- length(c(1,3,5,7))
| |
cg7 <- sum(is.na(c(1,NaN,3,5,7,NaN)))
| |
cg8 <- IQR(c(4,8,15,16,23,42), type = 8)
| |
cg9 <- fivenum(c(1,3,5,7))
| |
CodeGeneration[R] can translate various statistical visualizations:
cg10 <- hist(c(1,3,5,7,8,4,4), axes = FALSE, col = "Red", freq = TRUE, main = "Histogram")
| |
cg11 <- boxplot(c(4,8,15,16,23,42), col = "Orange", notch = TRUE, horizontal = TRUE, main = "BoxPlot")
| |
cg12 <- barplot(c(4,8,15,16,23,42), col = "Orange", space = 0.2e0, beside = TRUE, main = "Bar Chart", width = 0.5e0, horiz = TRUE)
| |
cg13 <- plot.ts(ts(c(10,25,30,55)))
| |
Translate commands to sample values from known distributions. Note that in this case, a warning is returned as R does not support direct references to distribution names in a similar manner to Maple:
cg14 <- dlnorm(1, meanlog = 0, sdlog = 1)
| |
cg16 <- plnorm(1, meanlog = 0, sdlog = 1)
| |
cg17 <- rnorm(10, mean = 0, sd = 1)
| |
cg18 <- qweibull(0.5e0,5, scale = 3)
| |
Several hypothesis Tests can also be translated:
cg19 <- chisq.test(c(4,8,15,16,23,42))
| |
cg20 <- t.test(c(1,3,5,7), c(2,4,8,3), mu = 1, conf.level = 0.975e0, alternative = "two.sided")
| |
|
|
Compatibility
|
|
•
|
The CodeGeneration[R] command was introduced in Maple 2015.
|
|
|
|