UseMethod("t")จะบอกคุณว่าt()เป็นฟังก์ชั่นทั่วไป( S3 ) ที่มีวิธีการเรียนวัตถุที่แตกต่างกัน
ระบบ S3 วิธีการจัดส่ง
สำหรับคลาส S3 คุณสามารถใช้methodsฟังก์ชันเพื่อแสดงรายการเมธอดสำหรับฟังก์ชันทั่วไปหรือคลาสเฉพาะ
> methods(t)
[1] t.data.frame t.default    t.ts*       
   Non-visible functions are asterisked
> methods(class="ts")
 [1] aggregate.ts     as.data.frame.ts cbind.ts*        cycle.ts*       
 [5] diffinv.ts*      diff.ts          kernapply.ts*    lines.ts        
 [9] monthplot.ts*    na.omit.ts*      Ops.ts*          plot.ts         
[13] print.ts         time.ts*         [<-.ts*          [.ts*           
[17] t.ts*            window<-.ts*     window.ts*      
   Non-visible functions are asterisked
"ฟังก์ชั่นที่ไม่สามารถมองเห็นได้จะถูกใส่เครื่องหมายดอกจัน" หมายความว่าฟังก์ชั่นจะไม่ถูกส่งออกจากเนมสเปซของแพ็คเกจ คุณยังสามารถดูรหัสต้นฉบับผ่าน:::ฟังก์ชั่น (คือstats:::t.ts) getAnywhere()หรือโดยการใช้  getAnywhere()มีประโยชน์เพราะคุณไม่จำเป็นต้องรู้ว่าฟังก์ชั่นนั้นมาจากไหน
> getAnywhere(t.ts)
A single object matching ‘t.ts’ was found
It was found in the following places
  registered S3 method for t from namespace stats
  namespace:stats
with value
function (x) 
{
    cl <- oldClass(x)
    other <- !(cl %in% c("ts", "mts"))
    class(x) <- if (any(other)) 
        cl[other]
    attr(x, "tsp") <- NULL
    t(x)
}
<bytecode: 0x294e410>
<environment: namespace:stats>
ระบบวิธีการจัดส่ง S4
ระบบ S4 เป็นวิธีการจัดส่งระบบที่ใหม่กว่าและเป็นทางเลือกสำหรับระบบ S3 นี่คือตัวอย่างของฟังก์ชั่น S4:
> library(Matrix)
Loading required package: lattice
> chol2inv
standardGeneric for "chol2inv" defined from package "base"
function (x, ...) 
standardGeneric("chol2inv")
<bytecode: 0x000000000eafd790>
<environment: 0x000000000eb06f10>
Methods may be defined for arguments: x
Use  showMethods("chol2inv")  for currently available ones.
เอาต์พุตมีข้อมูลจำนวนมากอยู่แล้ว standardGenericเป็นตัวบ่งชี้ของฟังก์ชั่น S4 วิธีการดูวิธี S4 ที่กำหนดไว้นั้นมีประโยชน์:
> showMethods(chol2inv)
Function: chol2inv (package base)
x="ANY"
x="CHMfactor"
x="denseMatrix"
x="diagonalMatrix"
x="dtrMatrix"
x="sparseMatrix"
getMethod สามารถใช้เพื่อดูซอร์สโค้ดของวิธีใดวิธีหนึ่ง:
> getMethod("chol2inv", "diagonalMatrix")
Method Definition:
function (x, ...) 
{
    chk.s(...)
    tcrossprod(solve(x))
}
<bytecode: 0x000000000ea2cc70>
<environment: namespace:Matrix>
Signatures:
        x               
target  "diagonalMatrix"
defined "diagonalMatrix"
นอกจากนี้ยังมีวิธีที่มีลายเซ็นที่ซับซ้อนมากขึ้นสำหรับแต่ละวิธีเช่น
require(raster)
showMethods(extract)
Function: extract (package raster)
x="Raster", y="data.frame"
x="Raster", y="Extent"
x="Raster", y="matrix"
x="Raster", y="SpatialLines"
x="Raster", y="SpatialPoints"
x="Raster", y="SpatialPolygons"
x="Raster", y="vector"
หากต้องการดูซอร์สโค้ดสำหรับวิธีใดวิธีหนึ่งเหล่านี้จะต้องระบุลายเซ็นทั้งหมดเช่น
getMethod("extract" , signature = c( x = "Raster" , y = "SpatialPolygons") )
มันจะไม่เพียงพอที่จะให้ลายเซ็นบางส่วน
getMethod("extract",signature="SpatialPolygons")
#Error in getMethod("extract", signature = "SpatialPolygons") : 
#  No method found for function "extract" and signature SpatialPolygons
ฟังก์ชันที่เรียกใช้ฟังก์ชันที่ไม่ได้เอ็กซ์พอร์ต
ในกรณีของts.union, .cbindtsและ.makeNamesTsมีฟังก์ชั่น unexported จากstatsnamespace คุณสามารถดูรหัสที่มาของฟังก์ชั่น unexported โดยใช้ผู้ประกอบการหรือ:::getAnywhere
> stats:::.makeNamesTs
function (...) 
{
    l <- as.list(substitute(list(...)))[-1L]
    nm <- names(l)
    fixup <- if (is.null(nm)) 
        seq_along(l)
    else nm == ""
    dep <- sapply(l[fixup], function(x) deparse(x)[1L])
    if (is.null(nm)) 
        return(dep)
    if (any(fixup)) 
        nm[fixup] <- dep
    nm
}
<bytecode: 0x38140d0>
<environment: namespace:stats>
ฟังก์ชันที่เรียกใช้โค้ดที่คอมไพล์แล้ว
โปรดทราบว่า "คอมไพล์" ไม่ได้อ้างถึงรหัส R ที่คอมไพล์ด้วยไบต์ที่สร้างขึ้นโดยแพ็คเกจคอมไพเลอร์ <bytecode: 0x294e410>สายในการส่งออกดังกล่าวข้างต้นแสดงให้เห็นว่าฟังก์ชั่นเป็นไบต์รวบรวมและคุณยังสามารถดูแหล่งที่มาจากบรรทัดคำสั่ง R ที่
ฟังก์ชั่นที่โทร.C, .Call, .Fortran, .External, .Internalหรือ.Primitiveจะเรียกจุดรายการในรหัสเรียบเรียงดังนั้นคุณจะต้องมองไปที่แหล่งที่มาของรหัสเรียบเรียงถ้าคุณต้องการที่จะเข้าใจการทำงาน นี้กระจก GitHub ของรหัส R แหล่งที่มาเป็นสถานที่ที่ดีที่จะเริ่มต้น ฟังก์ชั่นpryr::show_c_sourceนี้เป็นเครื่องมือที่มีประโยชน์เพราะจะพาคุณไปยังหน้า GitHub โดยตรง.Internalและ.Primitiveโทรออก แพคเกจอาจจะใช้.C, .Call, .Fortranและ.External; แต่ไม่ใช่.Internalหรือ.Primitiveเพราะสิ่งเหล่านี้ถูกใช้เพื่อเรียกใช้ฟังก์ชั่นที่สร้างไว้ในล่าม R
การเรียกใช้ฟังก์ชันข้างต้นบางอย่างอาจใช้วัตถุแทนสตริงอักขระเพื่ออ้างอิงฟังก์ชันที่รวบรวม ในกรณีที่วัตถุเป็นของชั้น"NativeSymbolInfo", "RegisteredNativeSymbol"หรือ"NativeSymbol"; และการพิมพ์วัตถุให้ข้อมูลที่เป็นประโยชน์ ตัวอย่างเช่นการoptimโทร.External2(C_optimhess, res$par, fn1, gr1, con)(โปรดทราบว่าC_optimhessไม่ใช่"C_optimhess")  optimอยู่ในแพคเกจสถิติเพื่อให้คุณสามารถพิมพ์stats:::C_optimhessเพื่อดูข้อมูลเกี่ยวกับฟังก์ชั่นที่รวบรวมได้ที่ถูกเรียก
คอมไพล์รหัสในแพ็คเกจ
หากคุณต้องการดูโค้ดที่คอมไพล์แล้วในแพ็คเกจคุณจะต้องดาวน์โหลด / คลายรหัสแพ็กเกจ ไบนารีที่ติดตั้งไม่เพียงพอ ซอร์สโค้ดของแพ็คเกจนั้นมีอยู่ในที่เก็บ CRAN (หรือที่ใช้ร่วมกันได้กับ CRAN) ที่แพคเกจติดตั้งไว้ตั้งแต่แรก download.packages()ฟังก์ชั่นจะได้รับแพคเกจที่มาสำหรับคุณ
download.packages(pkgs = "Matrix", 
                  destdir = ".",
                  type = "source")
สิ่งนี้จะดาวน์โหลดเวอร์ชั่นต้นฉบับของแพ็คเกจ Matrix และบันทึก.tar.gzไฟล์ที่เกี่ยวข้องในไดเรกทอรีปัจจุบัน ซอร์สโค้ดสำหรับฟังก์ชั่นที่คอมไพล์สามารถพบได้ในsrcไดเรกทอรีของไฟล์ที่ไม่มีการบีบอัดและไม่ได้ทำการทดสอบ ขั้นตอนที่ไม่บีบอัดและไม่เปิดเผยสามารถทำได้นอกRหรือจากภายในRโดยใช้untar()ฟังก์ชั่น เป็นไปได้ที่จะรวมขั้นตอนการดาวน์โหลดและการขยายเข้าไปในการโทรครั้งเดียว (โปรดทราบว่าสามารถดาวน์โหลดและคลายแพ็กเกจได้ครั้งละหนึ่งแพ็คเกจเท่านั้น):
untar(download.packages(pkgs = "Matrix",
                        destdir = ".",
                        type = "source")[,2])
อีกทางหนึ่งหากการพัฒนาแพคเกจโฮสต์สาธารณะ (เช่นผ่านGitHub , R-ForgeหรือRForge.net ) คุณอาจเรียกดูซอร์สโค้ดออนไลน์ได้
คอมไพล์รหัสในแพ็คเกจพื้นฐาน
แพคเกจบางอย่างถือว่าเป็นแพคเกจ "ฐาน" แพคเกจเหล่านี้มาพร้อมกับ R และรุ่นของพวกเขาจะถูกขังอยู่กับรุ่นของอาร์ตัวอย่าง ได้แก่base, compiler, และstats utilsดังนั้นจึงไม่มีอยู่ในแพ็คเกจดาวน์โหลดแยกต่างหากบน CRAN ดังที่อธิบายไว้ข้างต้น แต่พวกเขาเป็นส่วนหนึ่งของต้นไม้ R /src/library/แหล่งที่มาในแพคเกจไดเรกทอรีของแต่ละบุคคลภายใต้ วิธีการเข้าถึงแหล่ง R ได้อธิบายไว้ในส่วนถัดไป
โค้ดที่คอมไพล์แล้วที่สร้างไว้ในตัวแปล R
หากคุณต้องการดูรหัสในตัวล่าม R คุณจะต้องดาวน์โหลด / แกะแหล่ง R; หรือคุณสามารถดูแหล่งที่มาออนไลน์ผ่านการวิจัยเก็บข้อมูลการโค่นล้มหรือกระจก GitHub วินสตันช้าง
บทความข่าวของ Uwe Ligges (PDF) (หน้า 43) เป็นข้อมูลอ้างอิงทั่วไปที่ดีเกี่ยวกับวิธีการดูซอร์สโค้ด.Internalและ.Primitiveฟังก์ชัน ขั้นตอนพื้นฐานจะดูครั้งแรกสำหรับชื่อฟังก์ชันในsrc/main/names.cแล้วค้นหา "C-รายการ" src/main/*ชื่อในแฟ้มใน