Я хочу посмотреть исходный код функции, чтобы увидеть, как она работает. Я знаю, что могу напечатать функцию, набрав ее имя в строке:
> t
function (x)
UseMethod("t")
<bytecode: 0x2332948>
<environment: namespace:base>
В этом случае, что означает UseMethod("t")
? Как найти исходный код, который фактически используется, например: t(1:10)
?
Есть ли разница между тем, когда я вижу UseMethod
и когда я вижу standardGeneric
и showMethods
, как с with
?
> with
standardGeneric for "with" defined from package "base"
function (data, expr, ...)
standardGeneric("with")
<bytecode: 0x102fb3fc0>
<environment: 0x102fab988>
Methods may be defined for arguments: data
Use showMethods("with") for currently available ones.
В других случаях я вижу, что функции R вызываются, но я не могу найти исходный код для этих функций.
> ts.union
function (..., dframe = FALSE)
.cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE)
<bytecode: 0x36fbf88>
<environment: namespace:stats>
> .cbindts
Error: object '.cbindts' not found
> .makeNamesTs
Error: object '.makeNamesTs' not found
Как найти такие функции, как .cbindts
и .makeNamesTs
?
В других случаях есть немного кода R, но большая часть работы, похоже, выполняется где-то еще.
> matrix
function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
{
if (is.object(data) || !is.atomic(data))
data <- as.vector(data)
.Internal(matrix(data, nrow, ncol, byrow, dimnames, missing(nrow),
missing(ncol)))
}
<bytecode: 0x134bd10>
<environment: namespace:base>
> .Internal
function (call) .Primitive(".Internal")
> .Primitive
function (name) .Primitive(".Primitive")
Как узнать, что .Primitive
функция .Primitive
? Кроме того, некоторые функции вызывают .C
, .Call
, .Fortran
, .External
или .Internal
. Как я могу найти исходный код для них?