¿Cómo borro solo unos pocos objetos específicos del espacio de trabajo?

161

Me gustaría eliminar algunos datos del espacio de trabajo. Sé que el botón "Borrar todo" eliminará todos los datos. Sin embargo, me gustaría eliminar solo ciertos datos.

Por ejemplo, tengo estos marcos de datos en la sección de datos:

data
data_1
data_2
data_3

Me gustaría eliminar data_1, data_2y data_3, mientras se mantiene data.

Intenté data_1 <- data_2 <- data_3 <- NULL, lo que elimina los datos (creo), pero aún los mantiene en el área del espacio de trabajo, por lo que no es lo que me gustaría hacer.

Vado
fuente

Respuestas:

246

Encontrarás la respuesta escribiendo ?rm

rm(data_1, data_2, data_3)
Popular
fuente
44
Para eliminar todas las variables que puede usar rm(list=ls()).
Larkee
1
pero ¿cómo puedes hacer con la GUI, sin la línea de comando? como en Revolution R
skan
1
¿Qué pasa si quiero eliminar todas las variables con nombres que comienzan con la letra A, decir 'A001', 'A002' .... 'A999'. No quiero escribir tantos nombres de variables. ¡Gracias!
user3768495
2
Use la respuesta de @ mbask (justo debajo): rm(list = ls()[grep("A", ls())])
Pop
74

Una forma útil de eliminar todo un conjunto de objetos con nombre:

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

eliminando así todos los objetos cuyo nombre comienza con la cadena "tmp".

Editar: Siguiendo el comentario de Gsee, haciendo uso del patternargumento:

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

Editar: respondiendo al comentario de Rafael, una forma de retener solo un subconjunto de objetos es nombrar los datos que desea retener con un patrón específico. Por ejemplo, si desea eliminar todos los objetos cuyo nombre no comience paper, emitirá el siguiente comando:

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))
mbask
fuente
77
lsacepta un patternargumento, por lo que puede simplificarlo arm(list=ls(pattern="^tmp"))
GSee
1
Por separado, mira lo que sucede cuando lo usas value=TRUEcon grep... podría ahorrar algo de tipeo.
GSee
Hola, ¿hay alguna manera de mantener algunos datos y eliminar los otros (una cantidad mayor)? Saludos
Rafael
1
¡Hola! ¿Y cómo podría mantener en mi entorno R dos patrones diferentes? Intenté "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". ¿Alguien sabe?
Dekike el
1
Debe incluir su expresión regular en el patternargumento de grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask
15

El siguiente comando hará

rm(list=ls(all=TRUE))
jaamit
fuente
2
Esto eliminará todo, desde el espacio de trabajo, no sólo data1, data2y data3(es decir, datase eliminará también). Lo que está bien si eso es lo que quieres ...
Phil
2
¿Y si uno quiere eliminar solo datos, no funciones, valores u otros objetos en, digamos, el entorno global?
Nikos Alexandris
8

Usa el siguiente comando

remove(list=c("data_1", "data_2", "data_3"))
S. Elzwawi
fuente
6

Puede usar la aproposfunción que se usa para encontrar los objetos usando el nombre parcial.

rm(list = apropos("data_"))
Saroj Nayak
fuente
3

Si solo desea eliminar una de un grupo de variables, puede crear una lista y conservar solo la variable que necesita. La función rm se puede utilizar para eliminar todas las variables aparte de "datos". Aquí está el guión:

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()
DanThompson
fuente
3

Si está utilizando RStudio, ¡considere nunca utilizar el rm(list = ls())enfoque! * En su lugar, debe crear su flujo de trabajo en torno al uso frecuente de Ctrl+ Shift+F10 atajo para reiniciar su sesión R. Esta es la forma más rápida de bombardear el conjunto actual de variables definidas por el usuario Y borrar los paquetes cargados, dispositivos, etc. La reproducibilidad de su trabajo aumentará notablemente al adoptar este hábito.

Vea este excelente hilo en la comunidad Rstudio para (h / t @kierisi) para una discusión más exhaustiva (la esencia principal es capturada por lo que ya he dicho).

Debo admitir mis primeros años de codificación R con guiones destacados después de guiones que comienzan con el rm"truco". Estoy escribiendo esta respuesta como un consejo para cualquier otra persona que pueda comenzar sus carreras en R.

* por supuesto, hay usos legítimos para esto, al igual que attach, pero los usuarios principiantes estarán mucho mejor atendidos (IMO) cruzando ese puente en una fecha posterior.

MichaelChirico
fuente
3
  1. En RStudio, asegúrese de que la Environmentpestaña esté en modo Grid(no List).

  2. Marque los objetos que desea eliminar del entorno.

  3. Haz clic en el icono de la escoba.

Pablo
fuente
2
paste0("data_",seq(1,3,1)) 
# makes multiple data.frame names with sequential number
rm(list=paste0("data_",seq(1,3,1))
# above code removes data_1~data_3
hyunwoo jeong
fuente
1

Para borrar todos los datos:

haga clic en Misc>Remove all objects.

Eres bueno para ir.

Para limpiar la consola:

haga clic en edit>Clear console.

No hay necesidad de ningún código.

Abdul
fuente
1
Aunque tuve que hacer Session> Clear Workspace....
Peter K.