如何查看函数的源代码?我想查看一个函数的源代码,看看它是如何工作的。我知道我可以通过在提示符下键入其名称来打印函数:> tfunction (x) UseMethod("t")<bytecode: 0x2332948><environment: namespace:base>在这种情况下,是什么UseMethod("t")意思?我如何找到实际使用的源代码,例如:t(1:10)?有没有当我看到之间的差异UseMethod,当我看到standardGeneric和showMethods,与with?> withstandardGeneric for "with" defined from package "base"function (data, expr, ...) standardGeneric("with")<bytecode: 0x102fb3fc0><environment: 0x102fab988>Methods may be defined for arguments: dataUse showMethods("with") for currently available ones.在其他情况下,我可以看到正在调用R函数,但我找不到这些函数的源代码。> ts.unionfunction (..., dframe = FALSE) .cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE)<bytecode: 0x36fbf88><environment: namespace:stats>> .cbindtsError: object '.cbindts' not found> .makeNamesTsError: object '.makeNamesTs' not found我如何找到.cbindts和.makeNamesTs?一样的功能?在其他情况下,有一些R代码,但大多数工作似乎在其他地方完成。> matrixfunction (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>> .Internalfunction (call) .Primitive(".Internal")> .Primitivefunction (name) .Primitive(".Primitive")我如何找出该.Primitive功能的作用?同样,一些函数调用.C,.Call,.Fortran,.External,或.Internal。如何找到这些的源代码
3 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
使用debug()函数进行调试时会显示它。假设您想在t()转置函数中查看底层代码。只需输入't',就不会显示太多。
>t function (x) UseMethod("t")<bytecode: 0x000000003085c010><environment: namespace:base>
但是,使用'debug(functionName)',它揭示了底层代码,没有内部。
> debug(t)> t(co2)debugging in: t(co2)debug: UseMethod("t")Browse[2]> debugging in: t.ts(co2)debug: { cl <- oldClass(x) other <- !(cl %in% c("ts", "mts")) class(x) <- if (any(other)) cl[other] attr(x, "tsp") <- NULL t(x)}Browse[3]> debug: cl <- oldClass(x)Browse[3]> debug: other <- !(cl %in% c("ts", "mts"))Browse[3]> debug: class(x) <- if (any(other)) cl[other]Browse[3]> debug: attr(x, "tsp") <- NULLBrowse[3]> debug: t(x)
编辑: debugonce()完成相同,而不必使用undebug()
- 3 回答
- 0 关注
- 1477 浏览
添加回答
举报
0/150
提交
取消