Ci sono base
R modi per gestire questo, ma ho intenzione di raccomandare un pacchetto (so che stai cercando di sbarazzarsi di questi). Raccomando questo pacchetto per 2 motivi (1) risolve due problemi che stai avendo & (2) Dason K. e io stiamo sviluppando questo pacchetto (completa divulgazione). Il valore di questo pacchetto sta nel fatto che le funzioni sono più facili da ricordare con nomi coerenti. Fa anche alcune operazioni combinate. Nota che potresti fare tutto questo in base, ma questa domanda è già abbastanza localizzata, quindi userò uno strumento che facilita la risposta.
Questo pacchetto sarà:
- permette di cancellare pacchetto e le dipendenze
- consentono di installare i pacchetti in una directory temporanea piuttosto che libreria principale
L'avvertenza è che si può' t essere sicuro al 100% che la dipendenza del pacchetto non fosse già lì, installata precedentemente dall'utente. Pertanto proverò con cautela ad ogni passo di questa soluzione che non stai cancellando le cose che sono importanti. Questa soluzione si basa su 2 fattori (1) pacman
(2) file.info
. Supponiamo che le dipendenze che sono state modificate all'interno di una certa soglia di tempo (definita dall'utente) siano effettivamente pacchetti indesiderati. Nota la parola assume qui.
Ho reso questo riproducibile per la gente di casa in quanto la risposta installerà a caso un pacchetto da CRAN con dipendenze aggiuntive (questo installa un pacchetto che non hai già localmente con 3 o più dipendenze; qualsiasi pacchetto).
Realizzare uno esempio riproducibile
library(pacman)
(available <- p_cran())
(randoms <- setdiff(available, p_lib()))
(mypackages <- p_lib())
ndeps <- 1
while(ndeps < 3) {
package <- sample(randoms, 1)
deps <- unlist(p_depends(package, character.only=TRUE), use.names=FALSE)
ndeps <- length(setdiff(deps, mypackages))
}
package
p_install(package, character.only = TRUE)
disinstallazione pacchetto
Vi assegnare il nome del pacchetto dalla prima parte di package
o OP può usare il pacchetto indesiderato hanno installato e assegnare tale a package
(il mio pacchetto casuale è successo a package <- "OrdinalLogisticBiplot"
). Questo processo di eliminazione dovrebbe, idealmente, essere eseguito in una sessione R pulita senza pacchetti aggiuntivi (tranne pacman
) caricati.
## function to grab file info date/time modified
infograb <- function(x) file.info(file.path(p_path(), x))[["mtime"]]
## determine the differences in times modified for "package"
## and all other packages in library
diffs <- as.numeric(infograb(package)) - sapply(p_lib(), infograb)
## user defined threshold
threshold <- 15
## determine packages just installed within the time frame of the unwanted package
(delete_deps <- diffs[diffs < threshold & diffs >= 0])
## recursively find all packages that could have been installed
potential_depends <- unlist(lapply(unlist(p_depends(package, character=TRUE)),
p_depends, character=TRUE, recursive=TRUE))
## delete packages that are both on the lists of (1) installed within time
## frame of unwanted package and a dependency of that package
p_delete(intersect(names(delete_deps), potential_depends), character.only = TRUE)
Questo approccio presenta alcune grandi ipotesi.
Un approccio migliore da ottenere andare
p_temp(package_to_try)
Ciò consente di provare prima e non l'hanno Muddy vostra biblioteca locale.
Se non sei impressionato con pacman
puoi utilizzare il metodo descritto sopra per eliminarlo.
È possibile codificare qualcosa in base a 'tools :: dependsOnPkgs'. – hrbrmstr