在RStudio中安装R软件包期间,如何关闭更新加载的软件包窗口?

在RStudio中安装R软件包期间,如何关闭更新加载的软件包窗口?,r,R,如何禁用/抑制“更新加载的软件包”弹出窗口,该窗口在R软件包安装过程中不断显示?我很高兴将其设置为“否”,但我不知道如何使其正常工作(已调查install.packages()args并在谷歌上搜索,但没有发现) 背景:我的目标是比较大型(2k)软件包集合的安装时间。我想让它在一个循环中过夜,在每个迭代中:(1)我移除除basepriority包之外的所有包,(2)我测量特定包安装的时间。我必须没有弹出窗口(停止进程)来执行此操作 sessionInfo启动RStudio时: > sess

如何禁用/抑制“更新加载的软件包”弹出窗口,该窗口在
R
软件包安装过程中不断显示?我很高兴将其设置为“否”,但我不知道如何使其正常工作(已调查
install.packages()
args并在谷歌上搜索,但没有发现)

背景:我的目标是比较大型(2k)软件包集合的安装时间。我想让它在一个循环中过夜,在每个迭代中:(1)我移除除
base
priority包之外的所有包,(2)我测量特定包安装的时间。我必须没有弹出窗口(停止进程)来执行此操作

sessionInfo
启动RStudio时:

> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

loaded via a namespace (and not attached):
[1] compiler_3.5.1 tools_3.5.1   
> 

< P>你应该考虑一个标杆管理类似于:

#!/bin/bash

# Create file of all installed packages

Rscript -e 'writeLines(unname(installed.packages()[,1]), "installed-pkgs.txt")'

# Iterate over the file, benchmarking package load 3x (consider bumping this up)

while read -r pkg; do

  echo -n "Benchmarking package [${pkg}]"

  for iter in {1..3}; do

    echo -n "."

    Rscript --vanilla \
      -e 'args <- commandArgs(TRUE)' \
      -e 'invisible(suppressPackageStartupMessages(xdf <- as.data.frame(as.list(system.time(library(args[1], character.only=TRUE), FALSE)))))' \
      -e 'xdf$pkg <- args[1]' \
      -e 'xdf$iter <- args[2]' \
      -e 'xdf$loaded_namespaces <- I(list(loadedNamespaces()))' \
      -e 'saveRDS(xdf, file.path("data", sprintf("%s-%s.rds", args[1], args[2])))' \
      "${pkg}" \
      "${iter}"

  done

  echo ""

done <installed-pkgs.txt
然后您可以执行以下操作(我在几次pkg之后就终止了基准测试):

如果您打算在夜间运行它,请确保禁用macOS可能对您造成的所有“睡眠/空闲”时间(如禁用任何重量级屏幕保护程序、防止它将磁盘置于睡眠状态等)

请注意,我禁止打印包启动消息。您可能需要
capture.output()
,或者使用它和不使用它进行比较

library()
还具有所有这些参数选项:

library(
  package, 
  help, 
  pos = 2, 
  lib.loc = NULL,
  character.only = FALSE, 
  logical.return = FALSE,
  warn.conflicts = TRUE, 
  quietly = FALSE,
  verbose = getOption("verbose")
)
您可能还需要对各种基准测试运行进行调整

我还只看了“用户对包负载的感觉”值的中位数。考虑检查所有的<代码>系统。数据框中的时间<代码>值。< /P>

如果你的MAC是足够健壮的CPU核心,你有一个快速的固态磁盘,你可以考虑使用GNU代码>并行< /代码>。如果你这么做,我肯定会使用超过3次的迭代,如果你这样做,并且对并发并行运行的数量是相当保守的。

< P>你应该考虑一个标杆管理类似于:

#!/bin/bash

# Create file of all installed packages

Rscript -e 'writeLines(unname(installed.packages()[,1]), "installed-pkgs.txt")'

# Iterate over the file, benchmarking package load 3x (consider bumping this up)

while read -r pkg; do

  echo -n "Benchmarking package [${pkg}]"

  for iter in {1..3}; do

    echo -n "."

    Rscript --vanilla \
      -e 'args <- commandArgs(TRUE)' \
      -e 'invisible(suppressPackageStartupMessages(xdf <- as.data.frame(as.list(system.time(library(args[1], character.only=TRUE), FALSE)))))' \
      -e 'xdf$pkg <- args[1]' \
      -e 'xdf$iter <- args[2]' \
      -e 'xdf$loaded_namespaces <- I(list(loadedNamespaces()))' \
      -e 'saveRDS(xdf, file.path("data", sprintf("%s-%s.rds", args[1], args[2])))' \
      "${pkg}" \
      "${iter}"

  done

  echo ""

done <installed-pkgs.txt
然后您可以执行以下操作(我在几次pkg之后就终止了基准测试):

如果您打算在夜间运行它,请确保禁用macOS可能对您造成的所有“睡眠/空闲”时间(如禁用任何重量级屏幕保护程序、防止它将磁盘置于睡眠状态等)

请注意,我禁止打印包启动消息。您可能需要
capture.output()
,或者使用它和不使用它进行比较

library()
还具有所有这些参数选项:

library(
  package, 
  help, 
  pos = 2, 
  lib.loc = NULL,
  character.only = FALSE, 
  logical.return = FALSE,
  warn.conflicts = TRUE, 
  quietly = FALSE,
  verbose = getOption("verbose")
)
您可能还需要对各种基准测试运行进行调整

我还只看了“用户对包负载的感觉”值的中位数。考虑检查所有的<代码>系统。数据框中的时间<代码>值。< /P>

如果你的MAC是足够健壮的CPU核心,你有一个快速的固态磁盘,你可以考虑使用GNU代码>并行< /代码>。如果这样做的话,我肯定会在每个pkg中使用3次以上的迭代,并且对并发并行运行的数量相当保守。

不要加载任何包。或者,在重新安装之前将其分离。@Ista我不确定是否正确理解您的评论:我只使用了例如
install.packages(“dplyr”)
;运行此命令将触发弹出窗口。我是否可以在没有弹出窗口的情况下运行
install.packages(“dplyr”)
?另外,在安装.packages(“dplyr”)(我认为它可以分离任何可能加载的包?)之前,我运行
rm(list=ls())
,仍然可以看到弹出窗口。当您第一次启动R时,
sessionInfo()
显示什么。您是否正在加载以前保存的工作空间?听起来好像有一些代码正在为您加载包。(
rm
不卸载程序包,为此您需要类似于
detach(…,unload=TRUE)
的东西。@MrFlick我更新了会话信息的答案。不要使用RStudio。如果您的目标是真正对程序包加载进行基准测试,那么您应该只使用命令行R。RStudio会进行相当多的“监视”在引擎盖下的R会话中发生了什么(该弹出窗口是这方面的一个指示器)。您不希望这影响测量。此外,除非您确实知道自己在做什么w/R/t pkg加载/卸载,否则您应该真正启动一个新的R进程,然后进行pkg加载(有计时)vs使用相同的会话,否则您可能会得到无效的计时。不要加载任何软件包。或者,在重新安装之前分离它们。@我不确定是否正确理解您的评论:我只使用了例如
install.packages(“dplyr”)
;运行此命令会触发弹出窗口。我是否可以运行
install.packages(“dplyr”)呢
没有弹出窗口?同样,在安装.packages(“dplyr”)之前,我运行
rm(list=ls())
(我认为它可以分离任何可能加载的包?),仍然可以看到弹出窗口。当您第一次启动R时,
sessionInfo()是什么
show。您正在加载以前保存的工作空间吗?听起来可能有一些代码正在为您加载包。(
rm
不卸载包,您需要类似于
detach(…,unload=TRUE)的内容)
。@MrFlick我更新了会话信息的答案。不要使用RStudio。如果你的目标是真正的基准测试包加载,你应该只使用命令行R。RStudio会在引擎盖下的R会话中“观察”正在发生的事情(这个弹出窗口就是一个指标)。您不希望这会影响测量。此外,除非您真的知道如何加载/卸载包装,否则您应该启动一个新的r进程,然后进行包装加载(计时)vs使用相同的会话,否则您可能会得到无效的计时。对不起,我的目标是对包安装进行基准测试,而不是加载!对不起,我的目标是对包安装进行基准测试,而不是加载!
library(
  package, 
  help, 
  pos = 2, 
  lib.loc = NULL,
  character.only = FALSE, 
  logical.return = FALSE,
  warn.conflicts = TRUE, 
  quietly = FALSE,
  verbose = getOption("verbose")
)