Como limpo apenas alguns objetos específicos da área de trabalho?


161

Gostaria de remover alguns dados do espaço de trabalho. Eu sei que o botão "Limpar tudo" removerá todos os dados. No entanto, gostaria de remover apenas alguns dados.

Por exemplo, eu tenho esses quadros de dados na seção de dados:

data
data_1
data_2
data_3

Eu gostaria de remover data_1, data_2e data_3, ao mesmo tempo manter data.

Eu tentei data_1 <- data_2 <- data_3 <- NULL, o que remove os dados (acho), mas ainda os mantém na área da área de trabalho, portanto não é exatamente o que eu gostaria de fazer.

Respostas:


246

Você encontrará a resposta digitando ?rm

rm(data_1, data_2, data_3)

44
Para excluir todas as variáveis ​​que você pode usar rm(list=ls()).
larkee

1
mas como você pode fazer com a GUI, sem a linha de comando? como em Revolution R
skan 13/09/2015

1
e se eu quiser remover todas as variáveis ​​com nomes, comece com a letra A, diga 'A001', 'A002' .... 'A999'. Não quero digitar tantos nomes de variáveis. Obrigado!
user3768495

2
Use resposta da @ mbask (logo abaixo): rm(list = ls()[grep("A", ls())])
Pop

74

Uma maneira útil de remover todo um conjunto de objetos com nomes semelhantes:

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

removendo assim todos os objetos cujo nome começa com a cadeia "tmp".

Edit: Após o comentário de Gsee, fazendo uso do patternargumento:

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

Editar: respondendo ao comentário de Rafael, uma maneira de reter apenas um subconjunto de objetos é nomear os dados que você deseja reter com um padrão específico. Por exemplo, se você deseja remover todos os objetos cujo nome não começa com papervocê, emite o seguinte comando:

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

7
lsaceita um patternargumento, para que você possa simplificá-lo pararm(list=ls(pattern="^tmp"))
GSee

1
Separadamente, confira o que acontece quando você usa value=TRUEcom grep... poderia poupar algum digitação.
GSEE

Olá, existe uma maneira de manter alguns dados e remover os outros (uma quantidade maior)? Cheers
Rafael

1
Oi! E como eu poderia manter no meu ambiente R dois padrões diferentes? Eu tentei "rm (lista = grep (" ^ paper "|" ObjectExample ", ls (), valor = VERDADEIRO, invertido = VERDADEIRO)))". Alguém sabe?
Dekike

1
Você deve incluir sua expressão regular no patternargumento de grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask 04/11/19

15

O comando a seguir fará

rm(list=ls(all=TRUE))

2
Isto irá remover tudo, desde a área de trabalho, e não apenas data1, data2e data3(ie dataserão removidos também). Que é bom se é isso que você quer ...
Phil

2
E se alguém quiser remover apenas dados, não funções, valores ou outros objetos, digamos, no ambiente global?
Nikos Alexandris

8

Use o seguinte comando

remove(list=c("data_1", "data_2", "data_3"))

6

Você pode usar a aproposfunção usada para encontrar os objetos usando o nome parcial.

rm(list = apropos("data_"))

3

Se você quiser apenas remover uma de um grupo de variáveis, poderá criar uma lista e manter apenas a variável necessária. A função rm pode ser usada para remover todas as variáveis ​​além de "dados". Aqui está o script:

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

Se você estiver usando o RStudio, considere nunca usar a rm(list = ls())abordagem! * Em vez disso, você deve criar seu fluxo de trabalho usando frequentemente o atalho Ctrl+ Shift+ F10para reiniciar sua sessão R. Essa é a maneira mais rápida de controlar o conjunto atual de variáveis ​​definidas pelo usuário E limpar pacotes, dispositivos carregados etc. A reprodutibilidade do seu trabalho aumentará acentuadamente com a adoção desse hábito.

Veja este excelente tópico na comunidade Rstudio para (h / t @kierisi) para uma discussão mais aprofundada (a essência principal é capturada pelo que já afirmei).

Devo admitir meus próprios primeiros anos de codificação R, script após script, começando com o rm"truque" - estou escrevendo esta resposta como conselho para qualquer pessoa que possa estar iniciando suas carreiras em R.

* é claro que existem usos legítimos para isso - muito parecido attach- mas os usuários iniciantes serão muito melhor atendidos (IMO) atravessando essa ponte posteriormente.


3
  1. No RStudio, verifique se a Environmentguia está no modo Grid(não List).

  2. Marque os objetos que você deseja remover do ambiente.

  3. Clique no ícone da vassoura.


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

1

Para limpar todos os dados:

clique em Misc>Remove all objects.

Você é bom de ir.

Para limpar o console:

clique em edit>Clear console.

Não há necessidade de qualquer código.


1
Embora eu tivesse que fazer Session> Clear Workspace....
Peter K.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.