CodeGeneration - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Input and Output : Translation : CodeGeneration/R

CodeGeneration

  

R

  

translate Maple code to R code

 

Calling Sequence

Parameters

Description

Examples

Compatibility

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 nm=expr, where nm is a name and expr 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.

withCodeGeneration:

Translate a simple expression and assign it to the name w in the target code.

Rx+yz2xz,resultname=w

w <- -2 * x * z + y * z + x

Translate a list and assign it to an Array with the name w in the target code.

Rx&comma;2y&comma;5&comma;z&comma;resultname=w

w <- c(c(x,2 * y),c(5,z))

Translate a computation sequence, optimizing the input first:

css=1.0+x&comma;t=lnsexpx&comma;r=expx+xt&colon;

Rcs&comma;optimize

s <- 0.10e1 + x
t1 <- log(s)
t2 <- exp(-x)
t <- t2 * t1
r <- x * t + t2

Declare that x is a float and y is an integer and return the result in a string:

sRx+y+1&comma;declare=x::float&comma;y::&apos;integer&apos;&comma;output=string

scg <- x + y + 1

(1)

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:

Rf&comma;defaulttype=integer

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:

Rf

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:

R2coshx7tanhx

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:

Rf

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:

RdetHilbert

require("Matrix")

detHilbert <- function(M,n)
  return(det(Hilbert(n)))

Translate some descriptive statistics commands from the Statistics package:

RStatistics:-MeanMatrix2&comma;4&comma;8&comma;21

cg1 <- mean(matrix(c(2,4,8,21),nrow=1,ncol=4))

RStatistics:-MedianMatrix2&comma;4&comma;8&comma;21

cg2 <- median(matrix(c(2,4,8,21),nrow=1,ncol=4))

RStatistics:-Variance4&comma;8&comma;15&comma;16&comma;23&comma;42

cg3 <- var(c(4,8,15,16,23,42))

RStatistics:-Scale4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;center=2&comma;scale=1

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:

Rg

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.

RStatistics:-Quartile4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;3

cg5 <- quantile(c(4,8,15,16,23,42), prob = 3/4)

Translate some other summary statistics:

RStatistics:-Count1&comma;3&comma;5&comma;7

cg6 <- length(c(1,3,5,7))

RStatistics:-CountMissing1&comma;Floatundefined&comma;3&comma;5&comma;7&comma;Floatundefined

cg7 <- sum(is.na(c(1,NaN,3,5,7,NaN)))

RStatistics:-InterquartileRange4&comma;8&comma;15&comma;16&comma;23&comma;42

cg8 <- IQR(c(4,8,15,16,23,42), type = 8)

RStatistics:-FivePointSummary1&comma;3&comma;5&comma;7

cg9 <- fivenum(c(1,3,5,7))

CodeGeneration[R] can translate various statistical visualizations:

RStatistics:-Histogram1&comma;3&comma;5&comma;7&comma;8&comma;4&comma;4&comma;color=Red&comma;title=Histogram&comma;frequencyscale=absolute&comma;axes=none

cg10 <- hist(c(1,3,5,7,8,4,4), axes = FALSE, col = "Red", freq = TRUE, main = "Histogram")

RStatistics:-BoxPlot4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;color=Orange&comma;title=BoxPlot&comma;notched=true&comma;orientation=horizontal

cg11 <- boxplot(c(4,8,15,16,23,42), col = "Orange", notch = TRUE, horizontal = TRUE, main = "BoxPlot")

RStatistics:-BarChart4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;color=Orange&comma;title=Bar Chart&comma;width=0.5&comma;distance=0.2&comma;format=default

cg12 <- barplot(c(4,8,15,16,23,42), col = "Orange", space = 0.2e0, beside = TRUE, main = "Bar Chart", width = 0.5e0, horiz = TRUE)

RTimeSeriesAnalysis:-TimeSeriesPlotTimeSeriesAnalysis:-TimeSeries10&comma;25&comma;30&comma;55

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:

RStatistics:-PDFLogNormal0&comma;1&comma;1

cg14 <- dlnorm(1, meanlog = 0, sdlog = 1)

RStatistics:-ProbabilityFunctionPoisson2&comma;1

cg15 <- dpois(1,2)

RStatistics:-CDFLogNormal0&comma;1&comma;1

cg16 <- plnorm(1, meanlog = 0, sdlog = 1)

RStatistics:-SampleNormal0&comma;1&comma;10

cg17 <- rnorm(10, mean = 0, sd = 1)

RStatistics:-QuantileWeibull3&comma;5&comma;0.5

cg18 <- qweibull(0.5e0,5, scale = 3)

Several hypothesis Tests can also be translated:

RStatistics:-ChiSquareIndependenceTest4&comma;8&comma;15&comma;16&comma;23&comma;42

cg19 <- chisq.test(c(4,8,15,16,23,42))

RStatistics:-TwoSampleTTest1&comma;3&comma;5&comma;7&comma;2&comma;4&comma;8&comma;3&comma;1&comma;confidence=0.975&comma;alternative=twotailed

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.

• 

For more information on Maple 2015 changes, see Updates in Maple 2015.

See Also

CodeGeneration

CodeGenerationOptions

RDetails

TranslationDetails

updates,Maple2015,CodeGeneration