[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