ฉันจะล้างวัตถุเฉพาะบางอย่างจากพื้นที่ทำงานได้อย่างไร


161

ฉันต้องการลบข้อมูลบางส่วนออกจากพื้นที่ทำงาน ฉันรู้ว่าปุ่ม "ล้างทั้งหมด" จะลบข้อมูลทั้งหมด อย่างไรก็ตามฉันต้องการลบข้อมูลบางอย่างออก

ตัวอย่างเช่นฉันมีเฟรมข้อมูลเหล่านี้ในส่วนข้อมูล:

data
data_1
data_2
data_3

ผมอยากจะลบdata_1, data_2และในขณะที่การรักษาdata_3data

ฉันพยายามdata_1 <- data_2 <- data_3 <- NULLที่จะลบข้อมูล (ฉันคิดว่า) แต่ยังคงเก็บไว้ในพื้นที่ทำงานดังนั้นมันจึงไม่ใช่สิ่งที่ฉันอยากทำ

คำตอบ:


247

คุณจะพบคำตอบโดยพิมพ์ ?rm

rm(data_1, data_2, data_3)

44
สำหรับการลบตัวแปรทั้งหมดที่คุณสามารถrm(list=ls())ใช้ได้
larkee

1
แต่คุณจะทำอย่างไรกับ GUI โดยไม่ใช้บรรทัดคำสั่ง? เหมือนใน Revolution R
skan

1
ถ้าฉันต้องการลบตัวแปรทั้งหมดที่มีชื่อขึ้นต้นด้วยตัวอักษร A ให้พูดว่า 'A001', 'A002' .... 'A999' ฉันไม่ต้องการพิมพ์ชื่อตัวแปรมากมาย ขอบคุณ!
3768495

2
ใช้คำตอบของ @ mbask (ด้านล่าง): rm(list = ls()[grep("A", ls())])
Pop

74

วิธีที่มีประโยชน์ในการลบวัตถุที่มีชื่อเหมือนกันทั้งชุด:

rm(list = ls()[grep("^tmp", ls())])

ดังนั้นการลบวัตถุทั้งหมดที่ชื่อขึ้นต้นด้วยสตริง "tmp"

แก้ไข: หลังจากที่ความคิดเห็นของ Gsee ทำให้การใช้งานของpatternอาร์กิวเมนต์:

rm(list = ls(pattern = "^tmp"))

แก้ไข: ตอบรับความคิดเห็น Rafael วิธีหนึ่งในการเก็บรักษาเพียงชุดย่อยของวัตถุคือการตั้งชื่อข้อมูลที่คุณต้องการเก็บไว้ด้วยรูปแบบเฉพาะ ตัวอย่างเช่นถ้าคุณต้องการที่จะลบวัตถุทั้งหมดที่มีชื่อไม่ได้เริ่มต้นด้วยการpaperที่คุณจะออกคำสั่งต่อไปนี้:

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))

7
lsยอมรับการpatternโต้แย้งเพื่อให้คุณสามารถทำให้ง่ายขึ้นถึงrm(list=ls(pattern="^tmp"))
GSee

1
แยกกันดูว่าเกิดอะไรขึ้นเมื่อคุณใช้value=TRUEกับgrep... สามารถบันทึกการพิมพ์บางอย่าง
GSee

สวัสดีมีวิธีที่จะเก็บข้อมูลบางอย่างและลบข้อมูลอื่น ๆ (จำนวนที่มากกว่า) หรือไม่? ไชโย
ราฟาเอล

1
Hi! และฉันจะรักษารูปแบบที่แตกต่างกันสองรูปแบบในสภาพแวดล้อม R ฉันลอง "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))" มีใครรู้บ้าง
Dekike

1
คุณควรรวมการแสดงออกปกติของคุณลงในpatternอาร์กิวเมนต์ของgrep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

คำสั่งดังต่อไปนี้จะทำ

rm(list=ls(all=TRUE))

2
นี้จะลบทุกอย่างจากพื้นที่ทำงานไม่เพียงdata1, data2และdata3(คือdataจะถูกลบออกมากเกินไป) ซึ่งเป็นเรื่องปกติถ้านั่นคือสิ่งที่คุณต้องการ ...
ฟิล

2
และถ้าใครต้องการลบข้อมูลเท่านั้นไม่ใช่หน้าที่ค่าหรือวัตถุอื่น ๆ ในสภาพแวดล้อมโลก?
Nikos Alexandris



3

หากคุณต้องการลบหนึ่งในกลุ่มของตัวแปรคุณสามารถสร้างรายการและเก็บเฉพาะตัวแปรที่คุณต้องการ ฟังก์ชัน rm สามารถใช้เพื่อลบตัวแปรทั้งหมดนอกเหนือจาก "data" นี่คือสคริปต์:

0->data
1->data_1
2->data_2
3->data_3
#check variables in workspace
ls()
rm(list=setdiff(ls(), "data"))
#check remaining variables in workspace after deletion
ls()

#note: if you just use rm(list) then R will attempt to remove the "list" variable. 
list=setdiff(ls(), "data")
rm(list)
ls()

3

หากคุณกำลังใช้ RStudio โปรดพิจารณาไม่เคยใช้rm(list = ls())วิธี! *แต่คุณควรสร้างกระบวนการทำงานของคุณไปรอบ ๆ บ่อยจ้างCtrl+ Shift+ F10ทางลัดไปยังรีสตาร์ทเซสชั่น R ของคุณ นี่เป็นวิธีที่เร็วที่สุดในการทำนุกชุดตัวแปรปัจจุบันที่ผู้ใช้กำหนดและเพื่อเคลียร์แพ็กเกจอุปกรณ์ ฯลฯ การทำซ้ำงานของคุณจะเพิ่มขึ้นอย่างเด่นชัดโดยใช้นิสัยนี้

ดูกระทู้ที่ยอดเยี่ยมนี้ในชุมชน Rstudio สำหรับ (h / t @kierisi) เพื่อการสนทนาที่ละเอียดยิ่งขึ้น (ส่วนสำคัญคือสิ่งที่ฉันได้กล่าวไปแล้ว)

ฉันต้องยอมรับตัวเองในช่วงสองสามปีแรกของการเขียนสคริปต์ R หลังจากสคริปต์เริ่มต้นด้วยrm"เคล็ดลับ" - ฉันเขียนคำตอบนี้เป็นคำแนะนำให้กับคนอื่น ๆ ที่อาจเริ่มอาชีพ R ของพวกเขา

* แน่นอนว่ามีการใช้งานที่ถูกกฎหมายเช่นนี้ - เหมือนattach- แต่ผู้ใช้เริ่มต้นจะได้รับบริการที่ดีกว่า (IMO) ข้ามสะพานนั้นในภายหลัง


3
  1. ใน RStudio ให้แน่ใจว่าEnvironmentแท็บอยู่ในโหมดGrid(ไม่ใช่List)

  2. ทำเครื่องหมายวัตถุที่คุณต้องการลบออกจากสภาพแวดล้อม

  3. คลิกที่ไอคอนไม้กวาด



1

วิธีล้างข้อมูลทั้งหมด:

Misc>Remove all objectsคลิกที่

คุณดีไปแล้ว

ในการล้างคอนโซล:

edit>Clear consoleคลิกที่

ไม่จำเป็นต้องใช้รหัสใด ๆ


1
Session> Clear Workspace...แม้ว่าผมต้องทำ
ปีเตอร์เค
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.