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&equals;w

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

Translate a computation sequence, optimizing the input first:

css&equals;1.0&plus;x&comma;t&equals;lns&ExponentialE;x&comma;r&equals;&ExponentialE;x&plus;xt&colon;

Rcs&comma;optimize

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

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

sRx&plus;y&plus;1&comma;declare&equals;x::float&comma;y::integer&comma;output&equals;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&equals;integer

f <- function(x,y,z)
  return(x * y - 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:

R&apos;Statistics:-MeanMatrix2&comma;4&comma;8&comma;21&apos;

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

R&apos;Statistics:-MedianMatrix2&comma;4&comma;8&comma;21&apos;

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

R&apos;Statistics:-Variance4&comma;8&comma;15&comma;16&comma;23&comma;42&apos;

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

R&apos;Statistics:-Scale4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;center&equals;2&comma;scale&equals;1&apos;

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.

R&apos;Statistics:-Quartile4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;3&apos;

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

Translate some other summary statistics:

R&apos;Statistics:-Count1&comma;3&comma;5&comma;7&apos;

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

R&apos;Statistics:-CountMissing1&comma;Floatundefined&comma;3&comma;5&comma;7&comma;Floatundefined&apos;

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

R&apos;Statistics:-InterquartileRange4&comma;8&comma;15&comma;16&comma;23&comma;42&apos;

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

R&apos;Statistics:-FivePointSummary1&comma;3&comma;5&comma;7&apos;

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

CodeGeneration[R] can translate various statistical visualizations:

R&apos;Statistics:-Histogram1&comma;3&comma;5&comma;7&comma;8&comma;4&comma;4&comma;color&equals;Red&comma;title&equals;Histogram&comma;frequencyscale&equals;absolute&comma;axes&equals;none&apos;

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

R&apos;Statistics:-BoxPlot4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;color&equals;Orange&comma;title&equals;BoxPlot&comma;notched&equals;true&comma;orientation&equals;horizontal&apos;

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

R&apos;Statistics:-BarChart4&comma;8&comma;15&comma;16&comma;23&comma;42&comma;color&equals;Orange&comma;title&equals;Bar Chart&comma;width&equals;0.5&comma;distance&equals;0.2&comma;format&equals;default&apos;

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&apos;TimeSeriesAnalysis:-TimeSeriesPlotTimeSeriesAnalysis:-TimeSeries10&comma;25&comma;30&comma;55&apos;

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&apos;Statistics:-PDFLogNormal0&comma;1&comma;1&apos;

Warning, the function names {LogNormal} are not recognized in the target language
cg14 <- dlnorm(1, meanlog = 0, sdlog = 1)

R&apos;Statistics:-ProbabilityFunctionPoisson2&comma;1&apos;

Warning, the function names {Poisson} are not recognized in the target language
cg15 <- dpois(1,2)

R&apos;Statistics:-CDFLogNormal0&comma;1&comma;1&apos;

Warning, the function names {LogNormal} are not recognized in the target language
cg16 <- plnorm(1, meanlog = 0, sdlog = 1)

R&apos;Statistics:-SampleNormal0&comma;1&comma;10&apos;

Warning, the function names {Normal} are not recognized in the target language
cg17 <- rnorm(10, mean = 0, sd = 1)

R&apos;Statistics:-QuantileWeibull3&comma;5&comma;0.5&apos;

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&apos;Statistics:-ChiSquareIndependenceTest4&comma;8&comma;15&comma;16&comma;23&comma;42&apos;

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

R&apos;Statistics:-TwoSampleTTest1&comma;3&comma;5&comma;7&comma;2&comma;4&comma;8&comma;3&comma;1&comma;confidence&equals;0.975&comma;alternative&equals;twotailed&apos;

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