代码之家  ›  专栏  ›  技术社区  ›  JD Long

r:从命名空间调用函数

  •  27
  • JD Long  · 技术社区  · 15 年前

    我正试图改变R中包中的几个命令的功能。很容易就能看到命令的来源。但是,该函数调用包命名空间中的其他函数。这些函数不是导出的对象。那么我如何才能访问它们呢?

    具体示例: 如何访问copula::rmvdc中使用的ascall()函数?

    require(copula)
    copula::rmvdc
    getAnywhere("asCall")
    

    所以 as.Call() 存在于copula包中,但如何访问它?

    > copula::asCall
    Error: 'asCall' is not an exported object from 'namespace:copula'
    
    2 回复  |  直到 7 年前
        1
  •  63
  •   Shane    15 年前

    试试这个:

    copula:::asCall
    

    这是 previously answered on R-help .该函数未在包命名空间中导出,因此需要使用 ::: 而不是操作员。通常,当函数不是用于一般用途时(例如,在这种情况下,您不需要对它们进行文档记录),它们不会被导出。

        2
  •  12
  •   tim    7 年前

    开发时,? assignInNamespace 非常有用。

    这允许您将未导出函数的新副本插入包的命名空间。

    如果R的错误信息更有用,那就更好了。而不是:

    Error: 'matrixToPaths' is not an exported object from 'namespace:OpenMx'
    

    为什么不加:

    You might try OpenMx:::matrixToPaths"