【问题标题】:R default packages loaded despite using .Rprofile尽管使用 .Rprofile 加载了 R 默认包
【发布时间】:2019-05-02 18:27:07
【问题描述】:

我在 RGui/RStudio 中使用 R 3.5.1,并在我的用户主目录中使用一个“.Rprofile”文件,其中包含一个条目来预加载包“tidyverse”:library(tidyverse)

当想要使用包 'dplyr' 的 filter() 函数时,它会被包 'stats' 的 filter() 函数所掩盖,该函数已在 R 启动中采购 '.Rprofile' 后作为默认包加载过程。

这种行为似乎与?Startup 告诉我们的内容相矛盾:“请注意,当获取站点和用户配置文件时,仅加载基本包,因此其他包中的对象需要由例如 utils::dump.frames 或在显式加载相关包后引用。"

有人可以告诉我,为什么尽管使用了用户配置文件,但仍会加载像“stats”这样的默认包?非常感谢!

【问题讨论】:

  • 几个问题: 1. 当您使用 dplyr filter() 时,它是否有效? 2. 您的 .Rprofile 是否与其他库(例如 stats)在同一个文件夹中?这很奇怪,因为我一直能够使用 dplyr filter(),即使加载了 stats 包。
  • 抱歉回复晚了! Ad1:{dplyr} filter() 不起作用,当 {stats} 在加载 {dplyr} 之后通过在项目文件夹中采购 '.Rprofile' 加载时,这很奇怪,因为由于 '.Rprofile' 只有 {base} 应该是由 R (?Startup) 加载。广告 2:不,我的 '.Rprofile' 位于 Windows“Documents”文件夹中的项目文件夹中,而库 {stats} 位于 R 文件夹“C:\Program Files\R\R-3.5.1\library\stats”中.是的,在 {stats} 之后加载 {dplyr} 时,{dplyr} filter() 始终有效。

标签: r


【解决方案1】:

我的问题已经在这里得到解答:R dplyr filter not masking base filter? [duplicate]

如前所述,?Startup 的文档说:

请注意,当获取站点和用户配置文件时,仅加载基本包,因此其他包中的对象需要引用,例如utils::dump.frames 或显式加载相关包之后。

不幸的是,这很容易被误解,因此最初导致了我的问题。短语“仅加载基本包”的意思是,只有 base 包将作为启动过程中的第一个包加载,但其他默认包如 stats 将被加载在通过用户.Rprofile 文件获取包之后。

这就是为什么在启动过程中被加载到用户.Rprofile文件中的包dplyrfilter()函数被默认包statsfilter()函数屏蔽的原因,被加载后源用户.Rprofile 文件。

【讨论】:

    【解决方案2】:

    .Rprofile 在 R 加载基本库之前运行 先加载包stats

    library('stats', warn.conflicts = TRUE, verbose = TRUE) 
    library('dplyr', warn.conflicts = TRUE, verbose = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多