R - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


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.

> 

with⁡CodeGeneration:

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

> 

R⁡x+y⁢z−2⁢x⁢z,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.

> 

R⁡x&comma;2⁢y&comma;5&comma;z&comma;resultname=w

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

Translate a computation sequence, optimizing the input first:

> 

cs≔s=1.0+x&comma;t=ln⁡s⁢exp⁡−x&comma;r=exp⁡−x+x⁢t&colon;

> 

R⁡cs&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:

> 

s≔R⁡x+y+1&comma;declare=x::float&comma;y::integer&comma;output=string

s≔cg <- 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:

> 

R⁡f&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:

> 

R⁡f

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:

> 

R⁡2⁢cosh⁡x−7⁢tanh⁡x

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:

> 

R⁡f

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:

> 

R⁡detHilbert

require("Matrix")

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

Translate some descriptive statistics commands from the Statistics package:

> 

R⁡Statistics:-Mean⁡Matrix⁡2&comma;4&comma;8&comma;21

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

> 

R⁡Statistics:-Median⁡Matrix⁡2&comma;4&comma;8&comma;21

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

> 

R⁡Statistics:-Variance⁡4&comma;8&comma;15&comma;16&comma;23&comma;42

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

> 

R⁡Statistics:-Scale⁡4&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:

> 

R⁡g

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.

> 

R⁡Statistics:-Quartile⁡4&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:

> 

R⁡Statistics:-Count⁡1&comma;3&comma;5&comma;7

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

> 

R⁡Statistics:-CountMissing⁡1&comma;Float⁡undefined&comma;3&comma;5&comma;7&comma;Float⁡undefined

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

> 

R⁡Statistics:-InterquartileRange⁡4&comma;8&comma;15&comma;16&comma;23&comma;42

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

> 

R⁡Statistics:-FivePointSummary⁡1&comma;3&comma;5&comma;7

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

CodeGeneration[R] can translate various statistical visualizations:

> 

R⁡Statistics:-Histogram⁡1&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")

> 

R⁡Statistics:-BoxPlot⁡4&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")

> 

R⁡Statistics:-BarChart⁡4&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)

> 

R⁡TimeSeriesAnalysis:-TimeSeriesPlot⁡TimeSeriesAnalysis:-TimeSeries⁡10&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:

> 

R⁡Statistics:-PDF⁡LogNormal⁡0&comma;1&comma;1

Warning, the function names {LogNormal} are not recognized in the target language

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

> 

R⁡Statistics:-ProbabilityFunction⁡Poisson⁡2&comma;1

Warning, the function names {Poisson} are not recognized in the target language

cg15 <- dpois(1,2)

> 

R⁡Statistics:-CDF⁡LogNormal⁡0&comma;1&comma;1

Warning, the function names {LogNormal} are not recognized in the target language

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

> 

R⁡Statistics:-Sample⁡Normal⁡0&comma;1&comma;10

Warning, the function names {Normal} are not recognized in the target language

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

> 

R⁡Statistics:-Quantile⁡Weibull⁡3&comma;5&comma;0.5

Warning, the function names {Weibull} are not recognized in the target language

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

Several hypothesis Tests can also be translated:

> 

R⁡Statistics:-ChiSquareIndependenceTest⁡4&comma;8&comma;15&comma;16&comma;23&comma;42

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

> 

R⁡Statistics:-TwoSampleTTest⁡1&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