আর এর ওয়ার্কস্পেস থেকে আমি কীভাবে সমস্ত বস্তু সরিয়ে ফেলতে পারি?


219

আমার কাছে প্রচুর অবজেক্টের সাথে একটি ওয়ার্কস্পেস রয়েছে এবং আমি একটি ব্যতীত অন্য সবগুলি মুছে ফেলতে চাই। আদর্শভাবে আমি টাইপ করা এড়াতে চাই rm(obj.1, obj.2... obj.n)। ইঙ্গিত করা কি সম্ভব remove all objects but these ones?

উত্তর:


373

এখানে একটি সাধারণ নির্মাণ এটি করা হবে যা ব্যবহার করে setdiff:

rm(list=setdiff(ls(), "x"))

এবং একটি সম্পূর্ণ উদাহরণ। এটি আপনার নিজের ঝুঁকিতে চালান - এটি বাদে সমস্ত ভেরিয়েবল সরিয়ে ফেলবে x:

x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"

rm(list=setdiff(ls(), "x"))

ls()
[1] "x"

8
এখানে যে কৌশলটি ব্যবহৃত হচ্ছে তা হ'ল তালিকা = থেকে আরএম ব্যবহার করা, যা একটি অক্ষর ভেক্টরকে নামের তালিকার পরিবর্তে আরএম এ পাস করতে দেয়।
স্পেসডম্যান

53

প্যাকেজ keepথেকে ফাংশন ব্যবহার gdataকরা বেশ সুবিধাজনক।

> ls()
[1] "a" "b" "c"

library(gdata)
> keep(a) #shows you which variables will be removed
[1] "b" "c"
> keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c
> ls()
[1] "a"

আমি দেখতে পেয়েছি যে gdata থেকে "কীপ" ব্যবহার করা আরও বোধগম্য হয়েছে এবং এটি মনে রাখা সহজ যে বেস বেসের কোমন্ডের সমস্ত জটিলতা
দারিয়াস

47

আমি মনে করি অন্য কোনো বিকল্প এনভায়রনমেন্ট (নিচের ছবিটি) উপরে ডান দিকে গ্রিডে RStudio খোলা কর্মপরিসর এবং তারপর পরিবর্তন তালিকা হয়। তারপরে আপনি যে জিনিসগুলি সাফ করতে চান তার টিক চিহ্ন দিন এবং শেষ পর্যন্ত ক্লিয়ার ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন


3
একইভাবে, নাম বাক্সে ক্লিক করুন, যা সমস্ত ফাইল নির্বাচন করে এবং তারপরে আপনি রাখতে চান এমন সমস্ত ফাইল অনির্বাচিত করুন।
স্টিফেন

25

আমি সবেমাত্র একটি অনুরূপ তবে কিছুটা পৃথক প্রশ্নের উত্তরের জন্য বেশ কয়েক ঘন্টা শিকারে ব্যয় করেছি - আমার হাতে কয়েকটি ভেক্টর বাদে আর (সমস্ত ফাংশন সহ) সমস্ত বস্তু মুছতে সক্ষম হতে হবে।

এটি করার একটি উপায়:

rm(list=ls()[! ls() %in% c("a","c")])

যেখানে আমি যে ভেক্টর রাখতে চাই তার নাম দেওয়া হয়েছে 'এ' এবং 'সি'।

আশা করি এটি একই সমাধান অনুসন্ধানে যে কাউকে সহায়তা করবে!


10
এটিও কাজ করা উচিত rm(list=setdiff(ls(), c("a", "c"))), তাই না? @ অ্যান্ডির উত্তর দেখুন।
এইচপি্লিয়িংগার



5

এটি ls()এর patternবিকল্পটির সুবিধা নেয় , আপনার একই ধাঁচের সাথে প্রচুর পরিমাণে অবজেক্ট রয়েছে যা আপনি রাখতে চান না:

> foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold"  
> ls()
[1] "foo1" "foo2" "foo3" "x"   
> # Let's check first what we want to remove
> ls(pattern = "foo")
[1] "foo1" "foo2" "foo3"
> rm(list = ls(pattern = "foo"))
> ls()
[1] "x"

ওহ, এটা বিপজ্জনক বলে মনে হচ্ছে! শেলের মধ্যে একটি লা "প্রতিধ্বনি" মেলে এমন প্যাটার্নটি পরীক্ষা করার কোনও উপায় আছে কি?
DQdlM

1
আমার ধারণা rmফাংশনটি সর্বদা যত্ন সহ ব্যবহার করা উচিত (আরও বেশি শেল!)। আপনার প্রশ্নের উত্তরের জন্য আমার সম্পাদনা দেখুন।
পিটার ডাইকুমিস


3

আসুন ভিন্নভাবে চিন্তা করি, আমরা যদি কোনও গোষ্ঠী অপসারণ করতে চাই তবে কী হবে? এটা চেষ্টা কর,

 rm(list=ls()[grep("xxx",ls())]) 

আমি ব্যক্তিগতভাবে আমার স্ক্রিনে অনেকগুলি টেবিল, ভেরিয়েবল পছন্দ করি না, তবুও আমি সেগুলি ব্যবহার এড়াতে পারি না। তাই আমি "xxx" দিয়ে শুরু হওয়া অস্থায়ী জিনিসের নাম রাখি, যাতে এটি আর ব্যবহার না হওয়ার পরে আমি সেগুলি সরিয়ে ফেলতে পারি।


2

কোনও ফাংশনের মধ্যে থেকেই, ফাংশন ব্যতীত সমস্ত বস্তুগুলিকে .GlobalEnv এ আরএম করুন

initialize <- function(country.name) {

  if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
    rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
  }

}

2

ফাইলগুলির একটি তালিকা রাখতে , কেউ এটি ব্যবহার করতে পারেন:

rm(list=setdiff(ls(), c("df1", "df2")))

1

এ কেমন?

# Removes all objects except the specified & the function itself.

rme <- function(except=NULL){
  except = ifelse(is.character(except), except, deparse(substitute(except)))
  rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv)
}

1

ধরে নিচ্ছেন আপনি পরিবেশ থেকে ডিএফ ব্যতীত প্রতিটি বস্তু মুছে ফেলতে চান:

rm(list = ls(pattern="[^df]"))


-9

নিম্নলিখিতটি আপনার কনসোল থেকে সমস্ত বস্তু সরিয়ে ফেলবে

rm(list = ls())

4
প্রথমত, এটি যা চাওয়া হয়েছিল তা নয়। দ্বিতীয়ত, আর-এ করার প্রতিটি সম্ভাব্য উপায় সম্পর্কে পূর্ববর্তী উত্তরে inাকা পড়েছে। নতুন ব্যবহারকারীদের যাদের নতুন প্রশ্ন রয়েছে তাদের সহায়তা করার জন্য আপনাকে খুব স্বাগত জানাই। এটি ইতিমধ্যে 6 বছর আগে সমাধান করা হয়েছিল এবং এখনও সেই সমাধান এখনও রয়েছে।
জোরিস মাইস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.