4

重複の可能性:
R: パッケージ内の S4 関数のソース コードを表示する

パッケージ ( GEOquery) をダウンロードして、いくつかの機能を試していました。そのうちの 1 つは と呼ばれTable、私の理解では、データセットを集計することができS4ます。

例えば

> summary(GDS2853) # GDS2853 is a dataset I downloaded from NCBI 
Length  Class   Mode 
     1    GDS     S4 

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"

クラスを強制できなかったので、TableGDSデータセットを集計する方法を知ることができるようにコードを学びたいと思います-たとえば、GDSデータセットを集計することはできましたがdata.frameas.listS4

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

他の投稿で提案されているように試しましたgetMethodsが、以下は私が得たものです

> getMethod("Table")
Error in getMethod("Table") : 
  No method found for function "Table" and signature

入れて「どこ」も指定しようとしましたpackage=:GEOqueryが、どうやらpackage未使用の引数です。

のソース コードが表示されないのは、私が何を間違えたのだろうかTable

4

2 に答える 2

8

Table投稿した出力から、 S4 ジェネリックの ように見えます。

その 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"))
于 2012-10-01T20:10:35.210 に答える
3

あなたの例では、次のようになります。

getMethod("Table", "GEOData")

S4 メソッドのヘルプ ドキュメントを取得する方法にも興味があるかもしれません。これには、同様に通常とは異なる呼び出しが必要です。

method?Table("GEOData")

通常、S4 では、次のものが必要になります。

  • 関数名
  • 対象となるオブジェクトのクラス (シグネチャ)

後者について迷っている場合:

class(object)

クラスを返します。また、次のこともできます。

showMethods("Table")

現在利用可能なすべてのメソッドを表示します。または、よく使用するものを見つけます:

findMethods("Table")

その理由は、findMethods特定の関数のすべてのメソッドのリストを返すためです。クラスには長い名前を付けることができますが、タイプミスや大文字の間違いがよくあるので、簡単なハックとしてfindMethods("functionname")便利です。もちろん、印刷されたリストが非常に長くなる可能性があるため、多くのメソッドを持つ一般的な関数に苦しむこともあります。

于 2012-10-02T01:46:54.363 に答える