【问题标题】:Appending to the `defaultPackages` option in `.Rprofile`附加到 `.Rprofile` 中的 `defaultPackages` 选项
【发布时间】:2022-06-11 08:34:32
【问题描述】:

?options 文档对defaultPackages 的描述及其实际行为似乎存在不一致。在 R 4.2.0 中,它是 reads(在 fullrefman.pdf 的第 438 页上)

     ‘defaultPackages’: the packages that are attached by default when
          R starts up.  Initially set from value of the environment
          variable ‘R_DEFAULT_PACKAGES’, or if that is unset to
          ‘c("datasets", "utils", "grDevices", "graphics", "stats",
          "methods")’.  (Set ‘R_DEFAULT_PACKAGES’ to ‘NULL’ or a
          comma-separated list of package names.)  It will not work to
          set this in a .Rprofile file, as its value is consulted
          before that file is read.

我的问题与最后一句话有关 - R 4.2.0 中的实际行为似乎与此相矛盾。例如,我可以阻止标准默认包像示例 1 中那样被加载

# .Rprofile Example 0 (empty)
# R Output 0
$ R --vanilla --quiet -e 'search()'
> search()
[1] ".GlobalEnv"        "package:stats"     "package:graphics" 
[4] "package:grDevices" "package:utils"     "package:datasets" 
[7] "package:methods"   "Autoloads"         "package:base"     

# .Rprofile Example 1
options(defaultPackages = c())

# R Output 1
$ R --quiet -e 'search()'
> search()
[1] ".GlobalEnv"      "package:methods" "Autoloads"       "package:base"

我也可以这样做(这是我了解here的预期用例)

# .Rprofile Example 2
common.packages <- c("ggplot2", "tidyverse")
option(defaultPackages = c(getOption(defaultPackages), common.packages))

# R Output 2
$ R --quiet -e 'search()' 
Loading required package: utils
Tracing function "install.packages" in package "utils"
── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
✔ purrr   0.3.4     
── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
> search()
 [1] ".GlobalEnv"        "package:forcats"   "package:stringr"  
 [4] "package:dplyr"     "package:purrr"     "package:readr"    
 [7] "package:tidyr"     "package:tibble"    "package:tidyverse"
[10] "package:ggplot2"   "package:stats"     "package:graphics" 
[13] "package:grDevices" "package:datasets"  "package:utils"    
[16] "package:methods"   "Autoloads"         "package:base"     

我错过了什么吗?我的系统配置有什么特别之处吗:从here 下载的Ubuntu 20.04、R 4.2.0,并使用r2ubspm

编辑:为了澄清我的问题,我认为文档中有错误。它说我不能做某事,而我显然可以。

【问题讨论】:

    标签: r


    【解决方案1】:

    R 4.2.0,Ubuntu 22.04

    edd@rob:~$ R --vanilla --quiet -e 'search()'
    > search()
    [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
    [4] "package:grDevices" "package:utils"     "package:datasets" 
    [7] "package:methods"   "Autoloads"         "package:base"     
    > 
    > 
    edd@rob:~$ 
    

    我有stats。也许你的结局有些不同?

    【讨论】:

    • 嗯,所以当我在 R 中交互使用search() 时,我只得到[1] ".GlobalEnv" "package:methods" "Autoloads" "org:r-lib" "package:base"。但是当我使用您的确切命令时,我会得到与您相同的结果。所以这与--vanilla 标志或交互式R有关。
    • 这可能与您在RHOME/etc 中的默认文件有关。 org:r-lib 也似乎不寻常。您使用什么操作系统,您的版本是从哪里获得的?
    • 对,所以--vanilla 标志忽略了.Rprofile,所以它显示stats 是有意义的。我很困惑?options 声称我无法在.Rprofile 中更改defaultPackages,因为在.Rprofile 加载之前咨询了defaultPackages,但我显然可以更改它。你能重现能够在.Rprofile 中更改defaultPackages 吗?
    • 我在 Ubuntu 20.04 上,我从标准 Rutter PPA 下载了 R。
    • 如果您在与公认的 R 大师 Dirk 反复讨论后仍有疑问,您可以将其发布在 R-dev 邮件列表上,该邮件列表通常会解决文档准确性问题。
    【解决方案2】:

    我发现对文档的解释是有意义的。将在此处发布此内容以供可能感到困惑的其他人使用。

    再考虑最后一句话

    在 .Rprofile 文件中设置它是行不通的,因为在读取该文件之前会查询它的值。

    有两种有效的解释:1) “this”一词指的是defaultPackages,2) “this”一词指的是R_DEFAULT_PACKAGES

    在第一种解释中,该陈述是不准确的,正如我的 OP 中的示例所提供的那样。

    在第二种解释中,陈述是正确的(虽然我觉得这句话模棱两可)。

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 2019-04-01
      • 2015-02-22
      • 2021-09-05
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多