4

我正在尝试安装r软件包 sowas,不幸的是它太旧了,无法在新版本的r.

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

任何帮助表示赞赏。

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

4

2 回答 2

4

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

您还可以更新包以使用新版本的 R,以便您可以实际构建和安装包。为此,您可以像以前一样解压缩 .tar.gz,但现在您需要添加一个 NAMESPACE 文件。这只是包目录顶部的一个纯文本文件,其格式如下:

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")

就个人而言,我建议您采用添加 NAMESPACE 文件和不直接添加的方式,因为这样您就可以更好地控制代码,并且更有能力解决使用包时可能出现的任何问题。或者,如果您使用 git,您可以分叉我的 repo 并从那里继续修复问题。祝你好运。

于 2012-11-01T16:22:41.920 回答
2

如果您想查看特定函数的源代码,只需键入不带大括号的函数名称,然后按 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>
于 2013-12-01T16:54:09.363 回答