Possible Duplicate:
R: show source code of an S4 function in a package
I downloaded a package (GEOquery
) and was playing with some of the functions. One of them is called Table
, which, to my understanding, is able to tabulate an S4
dataset.
E.g.
> summary(GDS2853) # GDS2853 is a dataset I downloaded from NCBI
Length Class Mode
1 GDS S4
getAnywhere(Table)
shows
> getAnywhere(Table)
A single object matching ‘Table’ was found
It was found in the following places
package:GEOquery
namespace:GEOquery
with value
function (object)
standardGeneric("Table")
<environment: 0x06ad5268>
attr(,"generic")
[1] "Table"
attr(,"generic")attr(,"package")
[1] "GEOquery"
attr(,"package")
[1] "GEOquery"
attr(,"group")
list()
attr(,"valueClass")
character(0)
attr(,"signature")
[1] "object"
attr(,"default")
`\001NULL\001`
attr(,"skeleton")
function (object)
stop("invalid call in method dispatch to \"Table\" (no default method)",
domain = NA)(object)
attr(,"class")
[1] "standardGeneric"
attr(,"class")attr(,"package")
[1] "methods"
I'd like to learn the code of Table
so that I could know how to tabulate a GDS dataset, as data.frame
and as.list
couldn't coerce an S4
class - although I could tabulate GDS dataset by, for example,
GDS_table=Table(GDS2853)[1:20000,1:20] #GDS2853 contains 20 columns
and approx 17000 rows
I tried the getMethods
as suggested in other posts but below is what I got
> getMethod("Table")
Error in getMethod("Table") :
No method found for function "Table" and signature
I also tried to specify the "where" by putting in package=:GEOquery
but apparently package
is an unused argument.
Wonder what I did wrong so as to fail to see the source code for Table
.
From the output you posted, it looks like Table
is an S4 generic.
To view a list of its S4 methods, use showMethods()
. To view a particular method, use getMethod()
, passing in the 'signature' of the method you want along with the name of the function. (A 'signature' is a character vector composed of the class(es) of the argument(s) according to which the generic Table
performs its method dispatch. i.e. if you will be doing Table(GDS2853)
, the signature will likely be class(GDS2835)
)
Here's an example that gets the code for an S4 method in the sp package:
library(sp)
showMethods("overlay")
# Function: overlay (package sp)
# x="SpatialGrid", y="SpatialPoints"
# x="SpatialGrid", y="SpatialPolygons"
# x="SpatialGridDataFrame", y="SpatialPoints"
# x="SpatialGridDataFrame", y="SpatialPolygons"
# x="SpatialPixels", y="SpatialPoints"
# x="SpatialPixelsDataFrame", y="SpatialPoints"
# x="SpatialPoints", y="SpatialPolygons"
# x="SpatialPointsDataFrame", y="SpatialPolygons"
# x="SpatialPolygons", y="SpatialGrid"
# x="SpatialPolygons", y="SpatialPoints"
getMethod("overlay", signature=c("SpatialGrid", "SpatialPoints"))
In your example, it would be:
getMethod("Table", "GEOData")
You may also be interested in how to get the help documentation for S4 methods, which has an equally unusual invocation required:
method?Table("GEOData")
Generally, with S4, you will need
If you are lost as to the latter:
class(object)
will return the class, and you can also do:
showMethods("Table")
to show all currently available methods. Alternatively, I find I often use:
findMethods("Table")
and the reason is the findMethods
returns a list of all the methods for a particular function. Classes can have long names and I find I mistype/miscapitalize them often so as a quick hack, findMethods("functionname")
is handy. Of course, it can also bite you for generic functions with many methods as the printed list may be quite long.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With