从r包中提取源代码

从r包中提取源代码,r,package,R,Package,我正在尝试安装r软件包sowas,不幸的是,它太旧,无法在新版本的r中实现 根据作者的说法,您可以使用source()函数使用包来访问代码,但我还不知道如何做到这一点 感谢您的帮助 这里有一个指向我描述的包的链接,因为它不是CRAN包:该.zip文件是windows二进制文件,因此不会太有趣。您要查看的是.tar.gz归档文件的内容。您可以提取这些内容,然后查看R子目录中的代码 您还可以更新包以使用新版本的R,这样您就可以实际构建和安装包。为此,可以像以前一样解压.tar.gz,但现在需要添加一

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

根据作者的说法,您可以使用
source()
函数使用包来访问代码,但我还不知道如何做到这一点

感谢您的帮助


这里有一个指向我描述的包的链接,因为它不是CRAN包:

该.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)
其中,对于包中实际希望使用的任何函数,都有一个export语句。如果一个函数没有导出,那么包中的函数仍然可以访问该函数,但是用户不能使用它(那么容易)。一旦你这样做了,你应该能够构建和安装软件包

我已经冒昧地做了一些。我实际上没有花时间去弄清楚哪些函数是有用的,哪些函数应该被导出,只是假设如果为函数编写了一个帮助页面,那么它应该被导出,如果没有帮助页面,那么我就没有导出它。我使用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>
>var
函数(x,y=NULL,na.rm=FALSE,use)
{
如果(缺少(使用))

使用解压tar或zip存档并查看其内容。您将在子文件夹R中找到一些有趣的文件。我认为zip文件是Windows版本。如果您从下载linux版本并将其解压缩,您将能够在R目录中看到代码。即使您加载R代码,您也需要某种方式进行注册(甚至编译)src文件中的C代码。如何执行此操作将取决于您正在运行的操作系统等。我确实查看了解压缩包,但大多数文件都不可读。如前所述,我相信代码需要编译为R代码。有人知道如何执行此操作吗?我在windows 7中运行R