有时候,我使用attach
和一些子集项来处理研究数据的奇数维。为了防止在环境中“掩盖”变量(实际上是警告消息本身),我只需调用detach()
即可从R搜索路径中删除正在处理的任何数据集。当我迷上了脚本编制时,我可能最终会多次致电detach
。好吧,有趣的是,如果我叫足够多的话,R会删除启动时作为utils
,stats
和graphics
等包中的一部分加载的函数。为什么“分离”会删除这些功能?
答案 0 :(得分:6)
R从搜索路径中删除基本功能,例如
plot
和?
等。
这些被删除的函数通常被称为“基本”函数,但它们并非实际‹base›包的一部分。相反,plot
来自软件包‹graphics›,而?
来自软件包‹utils›,两者均为R default packages的一部分,因此默认情况下为附件。这两个软件包都在之后 package:base
后附加,并且您无意间通过过多的detach
调用来分离这些软件包(package:base
本身不能是分离的;这很重要,因为如果分离了,您将无法重新连接它:必需的功能在package:base
内)。
要对此进行扩展,通常将attach
和detach
与包环境而不是数据集结合使用:启用包中的use函数而无需显式键入包名称(例如graphics::plot
),library
函数将这些包附加。加载R时,默认情况下会附加一些软件包。您可以在Hadley Wickham的Advanced R中找到有关此问题的更多信息。
您注意到,您还可以附加和分离数据集。但是,通常不鼓励这样做(实际上非常强烈)。相反,您可以使用基本包中的数据转换功能(例如,with
和transform
,如Moody_Mudskipper在评论中指出的那样)或数据处理包中的数据转换功能(‹dplyr›是最新技术;另一种是‹data.table›)。