从R软件包中提取源代码



我正在尝试安装r软件包Sowas,不幸的是,它太旧了,无法在r的新版本中实现。

根据作者,您可以使用source()函数使用软件包来访问代码,但我无法弄清楚如何做到这一点。

任何帮助将不胜感激。

这是我描述的软件包的链接,因为它不是一个cran包:http://tocsy.pik-potsdam.de/wavelets/

.zip文件是Windows二进制文件,因此不会太有趣。您要看的是.tar.gz存档的内容。您可以提取这些内容,然后查看R子目录中的代码。

您还可以更新包装以使用新版本的R,以便您可以实际构建和安装软件包。为此,您可以像以前一样解开.tar.gz包装,但是现在您需要添加一个名称空间文件。这只是包装目录顶部的一个明文文件,其表格类似:

export(createar)
export(createwgn)
export(criticalvaluesWCO)
export(criticalvaluesWSP)
export(cwt.ts)
export(plot.wt)
export(plotwt)
export(readmatrix)
export(readts)
export(rk)
export(wco)
export(wcs)
export(writematrix)
export(wsp)

在您实际上想使用的软件包中的任何功能中都有一个导出语句。如果一个函数未导出,则软件包中的功能仍然可以访问该功能,但是用户无法使用它(很容易)。一旦这样做,您就应该能够构建和安装软件包。

我已经自由地做了一些。我实际上还没有花时间弄清楚哪些功能有用,应该被导出,只是假设如果为其功能编写了一个帮助页面,则应该导出它,并且如果没有帮助页面,我就不会了导出它。我使用rd2roxygen将帮助页面转换为roxygen代码(因为那是我滚动的方式),之后必须进行一些清理,但似乎安装好了。

因此,如果您安装了DevTools软件包,则实际上应该能够通过使用以下命令直接安装我直接修改的版本

library(devtools)
install_github("SOWAS", "Dasonk")

我个人建议您添加命名空间文件的路线,而直接的内容则是对代码的更多控制权,并且可以更有能力解决使用软件包时可能发生的任何问题。或者,如果您使用git,则可以分叉我的存储库,然后继续从那里修理东西。祝你好运。

如果要查看特定功能的源代码,则只需在没有括号的情况下输入功能的名称,然后按Enter。您将看到代码。

例如,键入命令提示中的var以查看其代码。

> var
function (x, y = NULL, na.rm = FALSE, use) 
{
    if (missing(use)) 
        use <- if (na.rm) 
            "na.or.complete"
        else "everything"
    na.method <- pmatch(use, c("all.obs", "complete.obs", "pairwise.complete.obs", 
        "everything", "na.or.complete"))
    if (is.na(na.method)) 
        stop("invalid 'use' argument")
    if (is.data.frame(x)) 
        x <- as.matrix(x)
    else stopifnot(is.atomic(x))
    if (is.data.frame(y)) 
        y <- as.matrix(y)
    else stopifnot(is.atomic(y))
    .Call(C_cov, x, y, na.method, FALSE)
}
<bytecode: 0x0000000008c97980>
<environment: namespace:stats>

最新更新