显示R中包中函数的源代码

B C*_*hen 4 r s4

可能重复:
R:显示包中S4函数的源代码

我下载了一个包(GEOquery)并正在玩一些函数.其中一个被调用Table,根据我的理解,它能够制表S4数据集.

例如

> summary(GDS2853) # GDS2853 is a dataset I downloaded from NCBI 
Length  Class   Mode 
     1    GDS     S4 
Run Code Online (Sandbox Code Playgroud)

getAnywhere(Table) 节目

> 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"
Run Code Online (Sandbox Code Playgroud)

我想学习代码,Table以便我可以知道如何将GDS数据集制成表格,因为data.frame并且as.list不能强制一个S4类 - 尽管我可以通过例如制表GDS数据集

GDS_table=Table(GDS2853)[1:20000,1:20] #GDS2853 contains 20 columns
and approx 17000 rows 
Run Code Online (Sandbox Code Playgroud)

我尝试了getMethods其他帖子中的建议,但下面是我得到的

> getMethod("Table")
Error in getMethod("Table") : 
  No method found for function "Table" and signature
Run Code Online (Sandbox Code Playgroud)

我还尝试通过放入来指定"where",package=:GEOquery但显然package是一个未使用的参数.

不知道我做错了什么,以便无法看到源代码Table.

Jos*_*ien 8

从您发布的输出中,它看起来像是TableS4泛型.

要查看其S4方法的列表,请使用showMethods().要查看特定方法,请使用getMethod(),传递所需方法的"签名"以及函数名称.('签名'是由参数的类组成的字符向量,根据该字符向量,泛型Table执行其方法调度.即,如果您将要执行Table(GDS2853),则签名可能是class(GDS2835))

这是一个获取sp包中S4方法代码的示例:

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"))
Run Code Online (Sandbox Code Playgroud)