Since no one else took the bait, I'll try to answer...


On 10/25/2016 06:57 PM, Ioannis Vardaxis wrote:


Ioannis Vardaxis
Stipendiat NTNU
Sendt fra min iPhone

Videresendt melding:

Fra: "bioconductorseat...@gmail.com<mailto:bioconductorseat...@gmail.com>" 
<bioconductorseat...@gmail.com<mailto:bioconductorseat...@gmail.com>>
Dato: 26. oktober 2016 kl. 00.55.14 CEST
Til: Ioannis Vardaxis 
<ioannis.varda...@math.ntnu.no<mailto:ioannis.varda...@math.ntnu.no>>
Emne: Re: Question about a package submission

On 10/25/2016 06:52 PM, Ioannis Vardaxis wrote:
Hi,

I have a problem documenting multiple functions in one rd file using
roxygen2. I tried to find the solution on the internet with no results.
I have for example 2 plot functions for class1 and class2 and I want to
make a plot-method.R as the Bioconductor guideline suggests.

What I have in the plot-method.R is the following code:

Please ask questions about Bioconductor package development on the bioc-devel 
mailing list.

https://stat.ethz.ch/mailman/listinfo/bioc-devel

Martin


#' @title Plot methods
#' @author ...
#'
#' @references ...
#'
#' @description something
#' @param x An x of correct class.
#' @param ... something
#'
#' @seealso something
#'
#' @rdname plot
#  @export plot
#' @include AllClasses.R #this where class1 and class2 are defined.
#?#'?packages I need
#' @importFrom plyr ddply . ldply laply
#' @importFrom utils methods
#' @importFrom S4Vectors metadata

#define the plot function which is in base in R:
plot <- function(x, ...){
   UseMethod("plot")
}

plot is already an S3 generic (from graphics) and an S4 generic (from stats4) so it is a mistake to redefine it. Whatever the documentation issues this part should be removed.



#define the other plot function for my classes:
#?class1
#' @rdname plot
#' @method plot class1
#' @return something
#' @export
plot.class1=function(x,...){
   code
}
#?class2
#' @rdname plot
#' @method plot class2
#' @return something
#' @export
plot.class2=function(x,...){
   code
}



When I generate with roxygen I am then able to write ??Mypkg::plot and I
get nice rd files. However when I try to use plot for an x object of
class1 or class2 then I get the following error:
Error in as.vector(x, mode = "numeric") :
 no method for coercing this S4 class to a vector


If on the other hand I remove the first code:
plot <- function(x, ...){
UseMethod("plot")
}


Then I am able to run the plot functions correctly with no error, but then
in the help in R I have to write ??Mypkg::plot.class1 and the main
S3method is plot.class1.

Or ?"plot<tab>" completing to ?plot.class1. But this is the way the help system works -- you're looking for help not on the generic, but on the method. I believe that you _could_ define @aliases plot, and ?MyPkg::plot would take you to the correct help page. But then ?plot would prompt the user to choose between your (method) documentation and base R (generic) documentation. This doesn't seem to be a good idea.

One possibility is to avoid the 'plot' generic anyway and use something more discriptive for how your object is being displayed, perhaps justifying with the notion that the representation produced by your plot differs from the representation described in ?plot.

Martin

How can I solve this in a way that I write ??Mypkg::plot and get all the
methods in one script and at the same time the plot.class1,2 work properly?






Best,
Ioannis


        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel



This email message may contain legally privileged and/or...{{dropped:2}}

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to