从r包中提取源代码

时间:2012-10-27 16:50:12

标签: r package

我正在尝试安装r软件包sowas,遗憾的是它在r的新版本中实现太旧了。

根据作者的说法,您可以使用source()函数来使用包来访问代码,但我无法弄清楚如何执行此操作。

感谢任何帮助。

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

2 个答案:

答案 0 :(得分: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文件的路径,而不是直接添加NAMESPACE文件,这样您就可以更好地控制代码,并且能够更好地解决使用该软件包时可能出现的任何问题。或者如果你使用git,你可以分叉我的仓库并继续从那里修理东西。祝你好运。

答案 1 :(得分:1)

如果要查看特定函数的源代码,只需键入没有大括号的函数名称,然后按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>