varias superponer studio lineas graficos graficas r workspace

superponer - separar todos los paquetes mientras trabaja en R



superponer graficas en r (7)

nothing

Puede valer la pena agregar la solución puesta a disposición por Romain François . Cuando cargue el paquete, nothing , que actualmente está disponible en nothing , descargará todos los paquetes cargados; como en el ejemplo que Romain proporciona:

loadedNamespaces() [1] "base" "datasets" "grDevices" "graphics" "methods" "stats" [7] "utils" require(nothing, quietly = TRUE) loadedNamespaces() [1] "base"

Instalación

Con el uso del paquete devtools :

devtools::install_github("romainfrancois/nothing")

pacman

Un enfoque alternativo utiliza el paquete pacman disponible a través de CRAN:

pacman::p_unload(pacman::p_loaded(), character.only = TRUE)

Mientras trabajaba para resolver otro problema, tuve este problema:

Puedo eliminar todos los objetos R por:

rm(list = ls(all = TRUE))

¿Hay un comando equivalente que pueda separar los paquetes instalados durante la sesión de trabajo?

> sessionInfo() R version 2.12.2 (2011-02-25) Platform: i386-pc-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=English_United States.1252 [2] LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base

require (ggplot2)

Loading required package: ggplot2 Loading required package: reshape Loading required package: plyr Attaching package: ''reshape'' The following object(s) are masked from ''package:plyr'': round_any Loading required package: grid Loading required package: proto

sessionInfo ()

R version 2.12.2 (2011-02-25) Platform: i386-pc-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=English_United States.1252 [2] LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.1252 attached base packages: [1] grid stats graphics grDevices utils datasets methods [8] base other attached packages: [1] ggplot2_0.8.9 proto_0.3-9.1 reshape_0.8.4 plyr_1.4

Intenté de esta manera, aunque incluso funcionó no en una solución global:

pkg <- c("package:ggplot2_0.8.9", "package:proto_0.3-9.1", "package:reshape_0.8.4", "package:plyr_1.4") detach(pkg, character.only = TRUE) Error in detach(pkg, character.only = TRUE) : invalid ''name'' argument In addition: Warning message: In if (is.na(pos)) stop("invalid ''name'' argument") : the condition has length > 1 and only the first element will be used

Lo que estoy buscando es algo global como:

rm(list = ls(all = TRUE))

para objetos, espera que no elimine los paquetes base adjuntos

Gracias;


Basándose en la respuesta de Gavin pero no del todo en una función completa, sería esta secuencia:

sess.pkgs <- function (package = NULL) { z <- list() if (is.null(package)) { package <- grep("^package:", search(), value = TRUE) keep <- sapply(package, function(x) x == "package:base" || !is.null(attr(as.environment(x), "path"))) package <- sub("^package:", "", package[keep]) } pkgDesc <- lapply(package, packageDescription) if (length(package) == 0) stop("no valid packages were specified") basePkgs <- sapply(pkgDesc, function(x) !is.null(x$Priority) && x$Priority == "base") z$basePkgs <- package[basePkgs] if (any(!basePkgs)) { z$otherPkgs <- package[!basePkgs] } z } lapply(paste("package:",sess.pkgs()$otherPkgs, sep=""), detach, character.only = TRUE, unload = TRUE)


Entonces, alguien debería simplemente haber respondido lo siguiente.

lapply(paste(''package:'',names(sessionInfo()$otherPkgs),sep=""),detach,character.only=TRUE,unload=TRUE)


Estabas cerca. Tenga en cuenta qué ?detach tiene que decir sobre el name del primer argumento de detach() :

Argumentos:

name: The object to detach. Defaults to ‘search()[pos]’. This can be an unquoted name or a character string but _not_ a character vector. If a number is supplied this is taken as ‘pos’.

Por lo tanto, necesitamos llamar repetidamente a detach() una vez por elemento de pkg . Hay otros argumentos que debemos especificar para que esto funcione. El primero es character.only = TRUE , que permite a la función asumir que el name es una cadena de caracteres; no funcionará sin ella. En segundo lugar, también es probable que deseamos descargar cualquier espacio de nombre asociado. Esto se puede lograr estableciendo la unload = TRUE . Entonces la solución es, por ejemplo:

pkg <- c("package:vegan","package:permute") lapply(pkg, detach, character.only = TRUE, unload = TRUE)

Aquí hay un ejemplo completo:

> require(vegan) Loading required package: vegan Loading required package: permute This is vegan 2.0-0 > sessionInfo() R version 2.13.1 Patched (2011-09-13 r57007) Platform: x86_64-unknown-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_GB.utf8 LC_NUMERIC=C [3] LC_TIME=en_GB.utf8 LC_COLLATE=en_GB.utf8 [5] LC_MONETARY=C LC_MESSAGES=en_GB.utf8 [7] LC_PAPER=en_GB.utf8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods [7] base other attached packages: [1] vegan_2.0-0 permute_0.7-0 loaded via a namespace (and not attached): [1] grid_2.13.1 lattice_0.19-33 tools_2.13.1 > pkg <- c("package:vegan","package:permute") > lapply(pkg, detach, character.only = TRUE, unload = TRUE) [[1]] NULL [[2]] NULL > sessionInfo() R version 2.13.1 Patched (2011-09-13 r57007) Platform: x86_64-unknown-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_GB.utf8 LC_NUMERIC=C [3] LC_TIME=en_GB.utf8 LC_COLLATE=en_GB.utf8 [5] LC_MONETARY=C LC_MESSAGES=en_GB.utf8 [7] LC_PAPER=en_GB.utf8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods [7] base loaded via a namespace (and not attached): [1] grid_2.13.1 lattice_0.19-33 tools_2.13.1

Si desea convertir esto en una función, estudie el código en sessionInfo() para ver cómo identifica lo que etiqueta como "otros paquetes adjuntos:". Combina ese fragmento de código con la idea anterior en una sola función y estarás en casa y en seco. Sin embargo, te dejo eso.


La mayoría de las veces es el problema plyr vs dplyr . Use esto al comienzo del código:

detach("package:plyr", unload=TRUE)

Entonces, cada vez que se ejecuta el script, se borra el paquete plyr


Por favor intente esto:

detachAllPackages <- function() { basic.packages <- c("package:stats","package:graphics","package:grDevices","package:utils","package:datasets","package:methods","package:base") package.list <- search()[ifelse(unlist(gregexpr("package:",search()))==1,TRUE,FALSE)] package.list <- setdiff(package.list,basic.packages) if (length(package.list)>0) for (package in package.list) detach(package, character.only=TRUE) } detachAllPackages()


o si tiene RStudio, simplemente desmarque todas las casillas marcadas en la pestaña Paquetes para separar