如何在R中查看bayesmeta包的源代码

时间:2017-12-31 03:13:07

标签: r function

我想知道如何访问bayesmeta包中的函数bayesmeta的源代码。看到类似的问题,我尝试使用package:::function,使用getAnywheremethods("bayesmeta")但没有成功。

在这种情况下,是否有更好的方法可以从R中访问源代码?

library("bayesmeta")

bayesmeta:::bayesmeta

getAnywhere("bayesmeta")

methods("bayesmeta")

1 个答案:

答案 0 :(得分:1)

如有疑问,我想查看实际的源代码。您可以从CRAN下载软件包源代码,直接查看R目录中的源文件。

该软件包可在此处获取:https://cran.r-project.org/web/packages/bayesmeta/index.html(请参阅"包源"行)。

指向来源的直接链接:https://cran.r-project.org/src/contrib/bayesmeta_2.0.tar.gz

我更喜欢查看原始包源,因为我看到了注释,我可能不知道的函数,未导出的函数等等。

在这种情况下,从包源中,您可以看到main函数被称为bayesmeta.default

> bayesmeta:::bayesmeta.default
function (y, sigma, labels = names(y), tau.prior = "uniform", 
    mu.prior = c(mean = NA, sd = NA), mu.prior.mean = mu.prior[1], 
    mu.prior.sd = mu.prior[2], interval.type = c("shortest", 
        "central"), delta = 0.01, epsilon = 1e-04, rel.tol.integrate = 2^16 * 
        .Machine$double.eps, abs.tol.integrate = rel.tol.integrate, 
    tol.uniroot = rel.tol.integrate, ...) 
{
    ptm <- proc.time()
    y <- as.vector(y)
    sigma <- as.vector(sigma)
    labels <- as.vector(labels)
    stopifnot(is.vector(y), is.vector(sigma), all(is.finite(y)), 
        all(is.finite(sigma)), length(sigma) == length(y), all(sigma >= 
            0), sum(sigma == 0) <= 1, length(mu.prior) == 2, 
        length(mu.prior.mean) == 1, length(mu.prior.sd) == 1, 
        is.na(mu.prior.mean) || is.finite(mu.prior.mean), is.na(mu.prior.sd) || 
            (is.finite(mu.prior.mean) && (mu.prior.sd > 0)), 
        ((is.na(mu.prior.mean) & is.na(mu.prior.sd)) || (is.finite(mu.prior.mean) & 
            is.finite(mu.prior.sd))), (is.function(tau.prior) | 
            (is.character(tau.prior) && (length(tau.prior) == 
                1))))
     etc. ...