| Math | R Documentation |
The S4 Math group contains 35 functions including
sin(), log(), etc. The vfunc equivalents are
capitalized, as in Sin(), Log(), etc.
Abs(x)
Sign(x)
Sqrt(x)
Ceiling(x)
Floor(x)
Trunc(x)
Cummax(x)
Cummin(x)
Cumprod(x)
Cumsum(x)
Log(x)
Log10(x)
Log2(x)
Log1p(x)
Acos(x)
Acosh(x)
Asin(x)
Asinh(x)
Atan(x)
Atanh(x)
Exp(x)
Expm1(x)
Cos(x)
Cosh(x)
Cospi(x)
Sin(x)
Sinh(x)
Sinpi(x)
Tan(x)
Tanh(x)
Tanpi(x)
Gamma(x)
Lgamma(x)
Digamma(x)
Trigamma(x)
x |
Generally take a single argument of class |
The reason for this rather untransparent device is that primitive
functions such as sin() behave somewhat differently from other
functions. We have:
Sin <- as.vf(function(x){sin(x)})
setMethod("sin", "vf", function(x){as.vf(function(o){Sin(x(o))})})
We define Sin() to be an object of class vf; the call to
setMethod() ensures that Sin(f) operates as intended.
Given a numeric, return a numeric; given a vf, return a vf
Note that “sin <- as.vf(sin)” does not work as desired,
giving a runtime error; trying to get round this with things like
“sin <- as.vf(function(x)sin)” and similar means that
“sin(3)” does not work.
There is no way to inform all vf objects that, if used as a
function with an argument of a primitive such as sin, to return
another vf object—and not to try and evaluate
“f(sin)”, which fails:
f <- as.vf(function(x){x^2 + 1})
f(Sin)
#> An object of class "vf"
#> function (...)
#> {
#> e1(...) + e2
#> }
#> <bytecode: 0x6065e7c8a900>
#> <environment: 0x6065e7c8a548>
f(sin)
#> Error in x^2: non-numeric argument to binary operator
Above, we see f(sin) returning an error (it tries to evaluate
“sin^2 + 1”). Observe that “Sin^2 + 1” is
perfectly OK, for Sin is a virtual function.
Robin K. S. Hankin
Sin + Exp
c((Sin + Exp)(.02232) ,sin(0.02232) + exp(0.02232))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.