আর-টি আরম্ভ না করে প্যাকেজটি কীভাবে আনলোড করা যায়


540

আমি আর পুনরায় আরম্ভ না করেই একটি প্যাকেজ আনলোড করতে চাই (বেশিরভাগ কারণ আর পুনরায় চালু করার সাথে সাথে আমি বিভিন্নভাবে চেষ্টা করার পরে, বিবাদী প্যাকেজগুলি হতাশ হয়ে উঠছে, তবে সম্ভবত একটি ফাংশন এবং অন্যটি ব্যবহার করতে কোনও প্রোগ্রামে এটি ব্যবহার করা যেতে পারে - যদিও নামের স্থানটি রেফারেন্সিং সম্ভবত ব্যবহারের জন্য একটি ভাল ধারণা)।

?library এমন কোনও বিকল্প দেখায় না যা কোনও প্যাকেজ আনলোড করবে।

একটি পরামর্শ রয়েছে যা detachপ্যাকেজ আনলোড করতে পারে তবে নিম্নলিখিত দুটি ব্যর্থ হয়েছে:

detach(vegan)

ত্রুটি এতে detach(vegan): অবৈধ nameযুক্তি

detach("vegan")

ত্রুটি এতে detach("vegan"): অবৈধ nameযুক্তি

তাহলে আমি কীভাবে একটি প্যাকেজ আনলোড করব?


4
@ আইট্রেটার: একটি লাইব্রেরি এমন একটি অবস্থান যেখানে আপনি প্যাকেজগুলি খুঁজে পান। (এগুলি প্রতিশব্দ নয়)) .libPaths()আপনাকে আপনার সিস্টেমে সমস্ত লাইব্রেরিতে পাথ দেয়।
রিচি কটন

16
@ রিচি: ধন্যবাদ আমি এটি আর প্রসঙ্গে পেয়েছি, তবে আমি অনুভব করি যে আর ব্যবহারটি বোঝা বা শব্দটিকে libraryদু'ভাবে libraryবোঝায় : 1 - এটি অন্য কোথাও একই ব্যবহার নয় , এবং 2 - শব্দটি library()লোড করতে ব্যবহৃত হয় ... একটি নয় গ্রন্থাগার, কিন্তু একটি প্যাকেজ।
ইটেটর

2
@ আইট্রেটার আপনি ঠিক বলেছেন। এটি আমার প্রয়োজনীয় উত্তর ছিল এবং গুগল করার সময় আমি "বিপরীত require" বা "পূর্বাবস্থায়িত library" ব্যবহার করতাম কারণ আমি সাধারণত লোড, এআরএম, "প্যাকেজগুলি" ব্যবহার করি। সুতরাং এটিকে সঠিকভাবে শিরোনাম করা প্রশ্নটিকে আরও সঠিক করে তোলে তবে এটি খুঁজে পাওয়া শক্ত।
আইসোমর্ফিজমস

উত্তর:


656

এটি চেষ্টা করুন ( ?detachআরও তথ্যের জন্য দেখুন):

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

প্যাকেজের একাধিক সংস্করণ একবারে লোড করা সম্ভব (উদাহরণস্বরূপ, আপনার যদি বিভিন্ন লাইব্রেরিতে বিকাশ সংস্করণ এবং একটি স্থিতিশীল সংস্করণ থাকে)। সমস্ত অনুলিপি বিচ্ছিন্ন হয়েছে তা গ্যারান্টি হিসাবে, এই ফাংশনটি ব্যবহার করুন।

detach_package <- function(pkg, character.only = FALSE)
{
  if(!character.only)
  {
    pkg <- deparse(substitute(pkg))
  }
  search_item <- paste("package", pkg, sep = ":")
  while(search_item %in% search())
  {
    detach(search_item, unload = TRUE, character.only = TRUE)
  }
}

উদাহরণস্বরূপ ব্যবহার

detach_package(vegan)

অথবা

detach_package("vegan", TRUE)

3
পছন্দ করুন উদ্ধৃত সংস্করণটি আর এর সর্বশেষতম সংস্করণে কাজ করছে বলে মনে হচ্ছে না your আমি আপনার সমাধান প্রতিফলিত করার জন্য কোহসকের উত্তর আপডেট করেছি।
এরি বি ফ্রেডম্যান

1
@ এরিবি.ফ্রিডম্যান, এখন প্রশ্ন হিসাবে
এরিক ব্যর্থ

1
> detach("package:MASS", unload=TRUE) Error in detach("package:MASS", unload = TRUE) : invalid 'name' argument
মোনা জালাল

5
যদি আপনি একটি অবৈধ 'নাম' যুক্তি ত্রুটি পান তবে, অক্ষর যুক্ত করুন on কেবল = সত্য
ডেন টেনেনবুম

2
> বিচ্ছিন্ন ("প্যাকেজ: ক্রিগিং", আনলোড = সত্য, অক্ষর.অনালি = টি) বিচ্ছিন্নকরণে ত্রুটি ("প্যাকেজ: ক্রিগিং", আনলোড = সত্য, অক্ষর.অনালি = টি): অবৈধ 'নাম' যুক্তি। তবে @ স্টারবারের সমাধান কাজ করে!
অ্যান্ড্রু

86

আপনি unloadNamespaceযেমন কমান্ডটি ব্যবহার করতে পারেন :

unloadNamespace("sqldf")

নামটি স্থান থেকে নামানোর আগে ফাংশনটি আলাদা করে দেয়।


1
@ কোহসকের সমাধানটি আপনার পক্ষে কাজ করে না, ক্ষেত্রে এটি আমার পক্ষে কাজ করেছে
ওয়াসাদাদামো 8'19 8'19 0-02

29

আপনি আরস্টুডিওতে (প্যাকেজগুলি) চেকবক্স বোতামটি চেক করতে পারেন।

আর স্টুডিও প্যাকেজ ফলক


16
এটি যোগ করার মতো যে এর ফলে একটি detach("package:packageToUnload", unload=TRUE)আদেশ কার্যকর হবে এবং ইতিমধ্যে প্রস্তাবিত সমাধানের চেয়ে
কনরাড

2
এছাড়াও, বক্সটি চেক করা হয়নি যদি প্যাকেজটি স্ট্রডিও ইনস্টল ও পুনরায় চালু (বাগ?) ব্যবহার করে লোড করা হয়েছিল। তবে আপনি এটি যাচাই বাছাই করতে পারেন।
jiggunjer

9

আমি কোহস্কে উত্তর হিসাবে যা লিখেছি তা চেষ্টা করেছিলাম এবং আমি আবার ত্রুটি পেয়েছি, তাই আমি কিছু অনুসন্ধান করেছি এবং এটি আমার পক্ষে কাজ করেছে (R 3.0.2):

require(splines) # package
detach(package:splines)

বা এছাড়াও

library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)

3
আপনি কি ত্রুটি পেতে পারি? কারণ এটি আমার পক্ষে কাজ করে (আর 3.1)। এবং দ্বিতীয় সমাধানটি হ'ল @ কোশকের উত্তর, কেবল আনলোড ছাড়াই (সুতরাং প্যাকেজের নাম স্থানটি লোড করা হয়নি)।
alko989

আমি একই ত্রুটি পেয়েছি। মুল বক্তব্যটি হ'ল আমি @ কোহসকে মতো একই প্যাকেজের নাম সহ একই সমাধান দিয়েছি। এর সহজ অর্থ হ'ল যদি আপনি প্যাকেজটি ব্যবহার করেন: তবে এটি ঠিকঠাক কাজ করা উচিত, তবে আপনি যদি এটি ব্যবহার না করেন তবে আপনি প্রশ্নের মতোই ত্রুটি পাবেন। ;)
মেহরাদ মাহমুদিয়ান

অপেক্ষা করুন ... তাই আপনি এমন একটি প্যাকেজ আনলোড করার চেষ্টা করেছিলেন যা এমনকি লোড হয়নি? এবং আপনি আশ্চর্য হয়ে গেছেন যে আপনি একটি ত্রুটি পেয়েছেন?
গ্রেগর টমাস

@ গ্রেগর আপনি কি দয়া করে ডাউনভোট বোতাম টিপানোর আগে আবার সবকিছু পড়বেন? !!! ফাংশনটির প্রয়োজন () এবং গ্রন্থাগার () প্রায় একই (কমপক্ষে এই ক্ষেত্রে), তাই প্যাকেজটি ইতিমধ্যে লোড হয়েছে !! আমি তথ্যের অভাবের জন্য আমি দায়ী নই !!
মেহরাদ মাহমুদিয়ান

8

আপনি যখন স্ক্রিপ্টগুলির মধ্যে পিছনে পিছনে যাচ্ছেন তখন কখনও কখনও প্যাকেজ আনলোড করার প্রয়োজন হতে পারে। এখানে একটি সরল আইএফ বিবৃতি যা সতর্কতাগুলি প্রতিরোধ করবে যা আপনি বর্তমানে লোড হয়নি এমন প্যাকেজটি আনলোড করার চেষ্টা করলে উপস্থিত হবে।

if("package:vegan" %in% search()) detach("package:vegan", unload=TRUE) 

কোনও স্ক্রিপ্টের শীর্ষে এটি অন্তর্ভুক্ত করা সহায়ক হতে পারে।

আমি আশা করি যে আপনার দিনকে!



3

আপনি যে প্যাকেজটি (এবং এর সাথে আনীত সমস্ত নির্ভরতা) মুছে ফেলতে চান তার চেষ্টা করে দেখতে পারেন unloadNamespace()তবে মেমরির পদক্ষেপ এখনও অবিরত থাকবে। এবং না, detach("package:,packageName", unload=TRUE, force = TRUE)কাজ করবে না।

একটি নতুন নতুন কনসোল থেকে বা প্যাকেজ Session > Restart Rসহ মেমরি পরীক্ষা করুন pryr:

pryr::mem_used()

# 40.6 MB   ## This will depend on which packages are loaded obviously (can also fluctuate a bit after the decimal)

আমার পরীক্ষা করুন sessionInfo()

R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17763)

Matrix products: default

locale:
[1] LC_COLLATE=English_Canada.1252  LC_CTYPE=English_Canada.1252    LC_MONETARY=English_Canada.1252 LC_NUMERIC=C                   
[5] LC_TIME=English_Canada.1252    

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

loaded via a namespace (and not attached):
[1] compiler_3.6.1   pryr_0.1.4       magrittr_1.5     tools_3.6.1      Rcpp_1.0.3       stringi_1.4.3    codetools_0.2-16 stringr_1.4.0   
[9] packrat_0.5.0   

Seuratপ্যাকেজটি লোড করুন এবং নতুন মেমরির পদচিহ্নগুলি পরীক্ষা করুন :

library(Seurat)
pryr::mem_used()

# 172 MB    ## Likely to change in the future but just to give you an idea

আসুন unloadNamespace()সমস্ত অপসারণ করতে ব্যবহার করুন :

unloadNamespace("Seurat")
unloadNamespace("ape")
unloadNamespace("cluster")
unloadNamespace("cowplot")
unloadNamespace("ROCR")
unloadNamespace("gplots")
unloadNamespace("caTools")
unloadNamespace("bitops")
unloadNamespace("fitdistrplus")
unloadNamespace("RColorBrewer")
unloadNamespace("sctransform")
unloadNamespace("future.apply")
unloadNamespace("future")
unloadNamespace("plotly")
unloadNamespace("ggrepel")
unloadNamespace("ggridges")
unloadNamespace("ggplot2")
unloadNamespace("gridExtra")
unloadNamespace("gtable")
unloadNamespace("uwot")
unloadNamespace("irlba")
unloadNamespace("leiden")
unloadNamespace("reticulate")
unloadNamespace("rsvd")
unloadNamespace("survival")
unloadNamespace("Matrix")
unloadNamespace("nlme")
unloadNamespace("lmtest")
unloadNamespace("zoo")
unloadNamespace("metap")
unloadNamespace("lattice")
unloadNamespace("grid")
unloadNamespace("httr")
unloadNamespace("ica")
unloadNamespace("igraph")
unloadNamespace("irlba")
unloadNamespace("KernSmooth")
unloadNamespace("leiden")
unloadNamespace("MASS")
unloadNamespace("pbapply")
unloadNamespace("plotly")
unloadNamespace("png")
unloadNamespace("RANN")
unloadNamespace("RcppAnnoy")
unloadNamespace("tidyr")
unloadNamespace("dplyr")
unloadNamespace("tibble")
unloadNamespace("RANN")
unloadNamespace("tidyselect")
unloadNamespace("purrr")
unloadNamespace("htmlwidgets")
unloadNamespace("htmltools")
unloadNamespace("lifecycle")
unloadNamespace("pillar")
unloadNamespace("vctrs")
unloadNamespace("rlang")
unloadNamespace("Rtsne")
unloadNamespace("SDMTools")
unloadNamespace("Rdpack")
unloadNamespace("bibtex")
unloadNamespace("tsne")
unloadNamespace("backports")
unloadNamespace("R6")
unloadNamespace("lazyeval")
unloadNamespace("scales")
unloadNamespace("munsell")
unloadNamespace("colorspace")
unloadNamespace("npsurv")
unloadNamespace("compiler")
unloadNamespace("digest")
unloadNamespace("R.utils")
unloadNamespace("pkgconfig")
unloadNamespace("gbRd")
unloadNamespace("parallel")
unloadNamespace("gdata")
unloadNamespace("listenv")
unloadNamespace("crayon")
unloadNamespace("splines")
unloadNamespace("zeallot")
unloadNamespace("reshape")
unloadNamespace("glue")
unloadNamespace("lsei")
unloadNamespace("RcppParallel")
unloadNamespace("data.table")
unloadNamespace("viridisLite")
unloadNamespace("globals")

এখন যাচাই করুন sessionInfo():

R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17763)

Matrix products: default

locale:
[1] LC_COLLATE=English_Canada.1252  LC_CTYPE=English_Canada.1252    LC_MONETARY=English_Canada.1252 LC_NUMERIC=C                   
[5] LC_TIME=English_Canada.1252    

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

loaded via a namespace (and not attached):
 [1] tools_3.6.1       stringr_1.4.0     rstudioapi_0.10   pryr_0.1.4        jsonlite_1.6      gtools_3.8.1      R.oo_1.22.0      
 [8] magrittr_1.5      Rcpp_1.0.3        R.methodsS3_1.7.1 stringi_1.4.3     plyr_1.8.4        reshape2_1.4.3    codetools_0.2-16 
[15] packrat_0.5.0     assertthat_0.2.1 

মেমরি পদচিহ্ন পরীক্ষা করুন :

pryr::mem_used()

# 173 MB

স্ক্রিন-কাস্ট বিক্ষোভের লিঙ্ক


2

আমি একটি বিকল্প সমাধান যোগ করতে চাই। এই সমাধানটি কোনও প্যাকেজ আনলোড সম্পর্কিত আপনার প্রশ্নের সরাসরি জবাব দেয় না তবে আইএমএইচও, আপনার পছন্দসই লক্ষ্য অর্জনের জন্য একটি ক্লিনার বিকল্প সরবরাহ করে, যা আমি বুঝতে পারি, নাম বিরোধগুলি এড়ানো এবং বিভিন্ন ফাংশন চেষ্টা করার সাথে বিস্তৃতভাবে উদ্বিগ্ন, যেমনটি বলা হয়েছে:

বেশিরভাগ কারণেই আমি পুনরায় চালু করার সাথে সাথে আমি ভিন্ন ভিন্ন চেষ্টা করি, বিবাদী প্যাকেজগুলি হতাশাজনক হয়ে উঠছে, তবে সম্ভবত একটি প্রোগ্রাম এবং অন্যটি ব্যবহার করার জন্য এটি কোনও প্রোগ্রামে ব্যবহার করা যেতে পারে - যদিও নাম ব্যবহারের জন্য রেফারেন্সিং সম্ভবত সেই ব্যবহারের জন্য আরও ভাল ধারণা

সমাধান

প্যাকেজের with_packageমাধ্যমে প্রদত্ত ফাংশনটি withrসম্ভাব্যতাগুলি সরবরাহ করে:

অনুসন্ধানের পথে একটি প্যাকেজ সংযুক্ত করুন, কোডটি কার্যকর করে, তারপরে প্যাকেজটিকে অনুসন্ধানের পথ থেকে সরিয়ে দেয়। প্যাকেজ নামস্থান হয় না unloaded অবশ্য।

উদাহরণ

library(withr)
with_package("ggplot2", {
  ggplot(mtcars) + geom_point(aes(wt, hp))
})
# Calling geom_point outside withr context 
exists("geom_point")
# [1] FALSE

geom_pointউদাহরণে ব্যবহৃত বিশ্বব্যাপী নেমস্পেস থেকে অ্যাক্সেসযোগ্য নয়। আমি মনে করি এটি প্যাকেজ লোড এবং আনলোডের চেয়ে দ্বন্দ্বগুলি পরিচালনা করার একটি পরিষ্কার উপায় হতে পারে।


1

আপনি কেবল unload()একবার ব্যবহার করতে পারবেন তাও নোট করুন । যদি আপনি এটি পুনরায় চালিত না করে দ্বিতীয়বার ব্যবহার করেন, আপনি library()খুব তথ্যমূলক ত্রুটি বার্তাটি অবৈধ 'নাম' যুক্তি পাবেন :

library(vegan)
#> Loading required package: permute
#> Loading required package: lattice
#> This is vegan 2.5-6
detach("package:vegan",  unload=TRUE)
detach("package:vegan",  unload=TRUE)
#> Error in detach("package:vegan", unload = TRUE): invalid 'name' argument

2020-05-09 এ ডিপেক্স প্যাকেজ (v0.3.0) দ্বারা তৈরি করা হয়েছে


0

কেবলমাত্র OUTPUT উইন্ডোতে যান, তারপরে প্যাকেজ আইকনে ক্লিক করুন (এটি প্লট এবং সহায়তা আইকনগুলির মধ্যে অবস্থিত )। আপনি যে প্যাকেজটি আনলোড করতে চান তা থেকে " টিক / চেক চিহ্ন " সরান ।

প্যাকেজটি আবার ব্যবহারের জন্য প্যাকেজের সামনে কেবল একটি " টিক বা চেক চিহ্ন " রাখুন বা ব্যবহার করুন:

library (lme4)

1
আপনার নিজস্ব কাস্টম লাইব্রেরির পাথ না থাকলে নয়। এটি "প্যাকেজগুলি" এর অধীনে প্রদর্শিত হবে না তাই আপনাকে উপরের পদ্ধতিগুলি করতে হবে
zazu

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.