首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的错误:找不到函数"check_reserved“

循环中的错误:找不到函数"check_reserved“
EN

Stack Overflow用户
提问于 2021-10-22 13:54:36
回答 1查看 133关注 0票数 0

使用时,尝试使用for-循环时出错。

for(i in 1:4){print(i)} Error in check_reserved(for_var_name) : could not find function "check_reserved"

有人知道怎么解决这个问题吗?我更新了R,RStudio并重新开始了会议

会议信息:

代码语言:javascript
复制
R version 4.1.1 (2021-08-10) Platform: x86_64-apple-darwin17.0
(64-bit) Running under: macOS Big Sur 10.16

Matrix products: default

LAPACK:
/Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

attached base packages: [1] stats graphics grDevices utils datasets
methods base

loaded via a namespace (and not attached): [1] compiler_4.1.1
tools_4.1.1

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-22 14:45:26

这个错误是因为以前使用过magic::magic_for,它以某种方式被带回到环境中。该函数的明显意图(自2016年以来没有变化)是允许for循环存储修改后的函数的结果,如下所示:

代码语言:javascript
复制
library(magicfor)  # Load library
magic_for(print)   # Call magic_for()

for (i in 1:3) {
  squared <- i ^ 2
  print(squared)
}
#> The loop is magicalized with print().
#> [1] 1
#> [1] 4
#> [1] 9

magic_result_as_vector()  # Get the result
#> [1] 1 4 9

print函数的“魔幻化”似乎被保留下来(也许在.Rdata中),但是在会话重新启动时,magicfor包是不可用的(或者只是没有加载)。我认为如果工作流确实需要magicfor包,那么(1)确保加载它,(2)向作者提交一个bug,以便更好地适应这种情况。

没有这一点,我现在的建议是:

  • 不要加载.Rdata文件(“已保存的会话”或类似文件);许多人认为有一个可重复的工作流并重新生成您需要副加载它们的中间/最终结构要好得多;这个建议的例外是长期运行的进程,但即使这样,我认为更好的情况是显式地保存/缓存这些值,而不是整个会话;
  • 同样,检查.Rprofile和其他R启动文件以删除对magicfor的任何提及;
  • 也许是核的,但有一个社区线提到卸载magicfor包;还不清楚这是否是决议的一部分,尽管根本原因似乎不太可能是.Rdata文件中陈旧的引用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69678104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档