Bunu işlemek için base
R yolları var, ancak bir paket önereceğim (bunlardan kurtulmaya çalıştığınızı biliyorum). Bu paketi 2 nedenden ötürü tavsiye ediyorum (1) & (2) Dason K. 'ya sahip olduğunuz iki problemi çözüyor ve bu paketi geliştiriyoruz (tam açıklama). Bu paketin değeri, fonksiyonların tutarlı olan isimleri hatırlamanın daha kolay olduğu anlamına gelmektedir. Aynı zamanda bazı kombine operasyonlar yapar. Tüm bunları üssünde yapabileceğinizi unutmayın, ancak bu soru zaten oldukça yerelleştirilmiştir, bu yüzden daha kolay yanıt veren bir araç kullanacağım.
Bu paket yapacaktır:
- Eğer
ana kütüphaneden yerine geçici bir dizinde paketleri yüklemesine izin paketi ve bağımlılıkları silmenize izin
uyarı 'olduğunu yapabilirsiniz olduğunu Daha önce kullanıcı tarafından kurulan paket bağımlılığının zaten orada olmadığından% 100 emin olun. Bu nedenle, bu çözümün her adımında, önemli olan şeyleri silmediğinize dikkat etmeliydim. Bu çözüm 2 faktöre (1) pacman
(2) file.info
dayanmaktadır. Belirli bir (kullanıcı tanımlı) zaman aralığında değiştirilen bağımlılıkların gerçekten istenmeyen paketler olduğunu kabul edeceğiz. Kelimeyi buraya not edin.
Evdeki insanlar için bu tekrarlanabilir hale getirdim, çünkü cevap ek bağımlılıkları olan CRAN'dan rastgele bir paket kuracaktır (bu, yerel olarak 3 veya daha fazla bağımlılık içeren bir paket yükler; herhangi bir paket).
bir tekrarlanabilir örnek
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)
kaldırma paketi yapma
Biz package
ilk bölümünden paket adı atar veya OP, yüklü istenmeyen paketi kullanmak ve bu atayabilirsiniz package
(rastgele paketim package <- "OrdinalLogisticBiplot"
oldu). Bu silme işlemi, ideal olarak, temiz bir R oturumuyla, hiçbir eklenti paketi (pacman
hariç) yüklenmiş olarak yapılmalıdır.
## 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)
Bu yaklaşım bazı büyük varsayımlarda bulunmaktadır.
gelen Daha iyi bir yaklaşım
p_temp(package_to_try)
gitmek olsun Bu, ilk denemek ve yerel kütüphane bulandırmak yok sağlar.
pacman
ile bastırılmamışsanız, silmek için yukarıda açıklanan yöntemi kullanabilirsiniz.
'tools :: dependsOnPkgs' temelli bir şeyi kodlayabilirsiniz. – hrbrmstr