微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找不到函数“ lucas_Lehmer2”

如何解决找不到函数“ lucas_Lehmer2”

我正在运行一个简单的R程序,该程序最近在上个月编写。我曾经能够从中调用R函数。我现在正在打电话给lucas_Lehmer2 ...

two <- as.bigz(2)
merNums <- two^p-1
t1 <- lucas_Lehmer2(p,merNums)
mP <- merNums[t1]

当我运行调用的R脚本时,我得到:

lucas_Lehmer2(p,merNums)中的错误: 找不到函数“ lucas_Lehmer2”

我也正确设置了工作目录。我检查了函数名称是否也与文件名匹配。有人有什么想法吗?

解决方法

我在CRAN上找不到它。由于您最近使用过它(并且还没有完全更新或重新加载或从头开始创建R),因此这里有个技巧可以为您找到。

我没有该功能,因此我将寻找一个我知道的功能:一个在功能名称中包含roxygen的功能。 (虽然我们知道那是哪里,但我们将按照步骤进行确认。

pkgs <- list.files(.libPaths()[1],pattern = "^NAMESPACE$",recursive = TRUE,full.names = TRUE)
names(pkgs) <- basename(dirname(pkgs))
ptn <- "\\(.*roxygen.*\\)" # you should use lucas_Lehmer
ret <- lapply(pkgs,function(fn) grep(ptn,readLines(fn),value = TRUE))
ret <- ret[lengths(ret) > 0]
str(ret)
# List of 2
#  $ roxygen2: chr [1:3] "export(roxygenise)" "export(roxygenize)" "useDynLib(roxygen2,.registration=TRUE)"
#  $ usethis : chr "export(use_roxygen_md)"

在这种情况下,我的R-4实例中安装了两个软件包,它们的功能包含roxygen

对于我的搜索,由于许多软件包都具有标头行"# Generated by roxygen2: do not edit by hand",因此我不得不更加具体地搜索以包括周围的括号。可以使这种搜索更加具体或笼统。对于您的情况,我认为找到任何带有lucas_Lehmer的东西就足够了,不需要正则表达式的幻想。

只有在您的.libPaths()[1]中,此技巧才有效。对于大多数安装,这是安装非标准软件包的位置,但是情况可能有所不同。如果是这样,请遍历.libPaths()中的每个路径,直到找到一些东西为止。如果这些都不起作用,则可能在库路径中查找R的较早版本。例如,如果您最近升级到R-4.0,则您的.libPaths()条目可能在路径中的某个位置包含"4.0";查找相邻的较旧版本目录,然后查找那里,直到找到特定的软件包。一旦在较旧的版本程序包中找到它,则需要将其install.packages放入R-4。

希望这会有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。