这是一个常见问题,所以请尽可能完整。答案是一个社区答案,所以如果您认为遗漏了什么,请随意编辑。 这个问题在meta上进行了讨论和批准。
我用R做了一些尝试。函数,但我得到以下错误消息:
Error: could not find function "some.function"
这个问题经常出现。当你在R中得到这种类型的错误时,你如何解决它?
这是一个常见问题,所以请尽可能完整。答案是一个社区答案,所以如果您认为遗漏了什么,请随意编辑。 这个问题在meta上进行了讨论和批准。
我用R做了一些尝试。函数,但我得到以下错误消息:
Error: could not find function "some.function"
这个问题经常出现。当你在R中得到这种类型的错误时,你如何解决它?
当前回答
您可以通过函数调用的名称间距::来修复此错误
comparison.cloud(colors = c("red", "green"), max.words = 100)
to
wordcloud::comparison.cloud(colors = c("red", "green"), max.words = 100)
其他回答
如果在检查包(R CMD检查)时发生这种情况,请查看您的命名空间。
你可以通过在命名空间中添加以下语句来解决这个问题:
exportPattern("^[^\\\\.]")
这将导出所有不以点(".")开头的内容。这允许你有你的隐藏函数,从一个点开始:
.myHiddenFunction <- function(x) cat("my hidden function")
我犯了错误
错误:找不到函数
当我用RStudio做一个包的R CMD检查时发生。我发现
exportPattern(“。”)
命名空间文件成功了。作为旁注,我最初配置了RStudio,让它使用ROxygen来制作文档——并选择了ROxygen为我编写NAMESPACE文件的配置,这将不断擦除我的编辑。因此,在我的实例中,我从Roxygen配置中取消了NAMESPACE,并向NAMESPACE添加了exportPattern(“.”)来解决这个错误。
Rdocumentation.org有一个非常方便的搜索功能,它可以让你从CRAN上的所有包中,以及从Bioconductor和GitHub上的包中找到函数。
另一个问题是,在存在命名空间的情况下,您试图从包foo运行一个未导出的函数。
例如(我知道有些做作,但是):
> mod <- prcomp(USArrests, scale = TRUE)
> plot.prcomp(mod)
Error: could not find function "plot.prcomp"
首先,您不应该直接调用S3方法,但让我们假设plot。Prcomp实际上是包foo中一些有用的内部函数。如果你知道你在做什么,调用这样的函数需要使用:::。您还需要知道函数所在的名称空间。使用getAnywhere(),我们发现该函数在包的统计信息中:
> getAnywhere(plot.prcomp)
A single object matching ‘plot.prcomp’ was found
It was found in the following places
registered S3 method for plot from namespace stats
namespace:stats
with value
function (x, main = deparse(substitute(x)), ...)
screeplot.default(x, main = main, ...)
<environment: namespace:stats>
所以我们现在可以直接调用它:
> stats:::plot.prcomp(mod)
我用过情节。Prcomp只是作为一个例子来说明目的。在正常使用中,不应该像这样调用S3方法。但正如我所说,如果您想调用的函数存在(例如,它可能是一个隐藏的实用程序函数),但在一个名称空间中,R将报告它无法找到该函数,除非您告诉它查找哪个名称空间。
将其与以下内容进行比较: 统计数据::plot.prcomp 上述方法失败了,因为while stats使用了情节。Prcomp,它不是从统计数据导出的错误正确地告诉我们:
错误:“阴谋。Prcomp不是从namespace:stats导出的对象
记录如下:
Pkg::name返回命名空间Pkg中导出的变量名的值,而Pkg:::name返回内部变量名的值。
我得到了同样的错误,我正在运行版本.99xxx,我从帮助菜单中检查更新并将我的RStudio更新到1.0x,然后错误没有出现
所以很简单的解决方法,就是更新你的R Studio