[R] Some questions about chron package..
Rui Barradas
ruipbarradas at sapo.pt
Tue Nov 27 21:03:23 CET 2012
Hello,
Inline.
Em 27-11-2012 18:06, 박상규 escreveu:
> Hello,
>
>
> I have questions while reviewing "chron" package(e.g.,chron.R).
>
>
> 1. What is the differences between 3 kinds of function definition ?
> 1) "name" <- function(...
> 2) 'name' <- function(...
> 3) name <- function(...
> Do you know Why author used various kinds of definitions ?
> Is there no functional differences between them ?
Not that I know of.
>
>
> 2. I don't understand the meaning of the below code:
>
> as.chron <- function(x, ...) UseMethod("as.chron")
> as.chron.default <- function (x, format, ...)
> { ....
>
>
> Could you let me know what is role of UseMethod("as.chron") ?
It creates a generic function named as.chron. The next instruction
creates the default method for that function.
>
>
> 3. In the following code,
>
>
>
> "chron" <-
> function(dates. = NULL, times. = NULL,
> format = c(dates = "m/d/y", times = "h:m:s"),
> out.format, origin.)
>
>
> 'dates', 'origin' and 'times' has dot(.) as at the end of word.
> Do you know the meaning of dots ?
I am not sure but I believe the programmer is trying to have arguments
with names not conflicting with classes "dates" and "times", or other
objects or arguments.
>
>
> 4. Could you introduce me some books on S/R language, especially for understanding of generic functions ?
> Some interesting packages such as quantmod, xts, zoo, etc., are seems to be coded using generic functions(UseMethod(..)).
> But I can't easily understand the code.
Try this.
f <- function(x) UseMethod("f")
f.default <- function(x) print("'x' is not of class 'matrix'")
f.matrix <- function(x) print("'x' is of class 'matrix'")
f(1)
f("a")
f(matrix(1, ncol=1))
f(list(1, 2, 3))
The S3 object oriented programming system is documented in many places,
it dispatches based on the class of the first argument so in the third
case it's f.matrix that is called and in the others, f.default. But you
need only to call f(args) (no suffix). Common examples are print(),
summary() and plot(). Any of these functions is generic and methods for
each class can and are written to them. You can see which methods there
are by running the command
methods(print) # 174 in R 2.15.2, new session
The syntax for these methods is "function.class". Then you can call
"function" that the S3 system will find the appropriate method, if any,
or will default to "function.default". (Like in as.chron.default)
There are free books on CRAN, read them. And google "S3 R Programming".
Hope this helps,
Rui Barradas
>
>
> Thanks in advance,
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list