r - 为什么调用 `detach` 会导致 R 调用 "forget"函数?

标签 r

有时我使用 attach 和一些子集术语来处理研究数据的奇数维度。为了防止“屏蔽”环境中的变量(实际上是警告消息本身),我只需调用 detach() 即可从 R 搜索路径中删除我正在使用的任何数据集。当我对脚本编写感到困惑时,我可能最终会调用 detach 几次。好吧,有趣的是,如果我足够调用它,R 会删除在启动时作为包的一部分加载的函数,例如 utilsstatsgraphics。为什么“分离”会移除这些功能?

最佳答案

R removes base functions from the search path, like plot and ? and so on.

这些被删除的函数通常被称为“基本”函数,但它们不是实际的‹base›包的一部分。相反,plot 来自包‹graphics›,而? 来自包‹utils›,它们都是R default packages 的一部分。 , 因此默认附加。这两个包都附加在之后package:base,并且您不小心用过多的detach 调用(package: base 本身 不能 被分离;这很重要,因为如果它被分离,你就不能重新附加它:所需的函数在 package:base 中).

为了扩展这一点,attachdetach 通常与包环境而不是数据集一起使用:启用使用函数从没有显式输入包名称(例如 graphics::plot)的包中,library 函数附加这些包。加载 R 时,默认会附加一些包。您可以在 Hadley Wickham 的 Advanced R 中找到更多相关信息。 .

如您所见,您还可以附加和分离数据集。但是,通常不鼓励这样做(事实上非常强烈)。相反,您可以使用基础包中的数据转换函数(例如,withtransform,正如 Moody_Mudskipper 在评论中指出的那样)或来自数据操作包(‹dplyr› 是最先进的;另一种选择是 ‹data.table› )。

关于r - 为什么调用 `detach` 会导致 R 调用 "forget"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52994194/

相关文章:

r - 将因子水平转换为列表以用于 R Shiny 中的动态输入

r - Hmisc::latex 不打印带有表格对象的标题

r - dplyr 迭代分位数的所有列

c++ - 使用 Rcpp 开发现有的 R 包

r - 如何使用 R Markdown to Beamer 中的 kable 删除标题和表格之间不必要的空白

r - scale_fill_discrete 不更改标签名称

将绘图保存为封装后记 (.eps) 时,R 会丢失信息

r - 使用 ggtext 的 ggplots 拼凑标题中的颜色?

r - na.approx 改变时区显示

r - 如何处理对数图中的零