Capítulo 10 Gerenciando uma sessão no R

Os conteúdos desta introdução e das seções 10.1 e 10.2 podem ser visualizados neste vídeo.

Ao executar o R, o usuário inicia uma sessão, a qual persiste até o momento que o usuário fecha o programa ou encerra a sessão.

O menu Session do RStudio mostra diversas opções para gerenciar uma sessão do R (figura 10.1). Por esse menu, o usuário pode, por exemplo, criar uma nova sessão, terminar ou reinicializar a execução do R, encerrar a sessão e outras funções que serão vistas mais adiante.

Menu Session do RStudio.

Figura 10.1: Menu Session do RStudio.

Todos os objetos criados ou carregados no R são armazenados em uma área comum de trabalho, denominada workspace.

Vamos iniciar uma sessão do R.

10.1 Listando objetos do workspace - função ls

Para verificarmos que objetos estão definidos no workspace, podemos usar a função ls (listar):

## character(0)

No RStudio, uma das abas na janela superior direita, chamada Environment, exibe os objetos que estão no workspace da sessão corrente (figura 10.2).

Aba ambiente (environment) no RStudio.

Figura 10.2: Aba ambiente (environment) no RStudio.

Aparentemente nada está carregado no workspace, mas a função ls, sem argumentos, não lista objetos cujos nomes se iniciam com “.”. Para isso, precisamos usar a função ls(all=TRUE).

## [1] ".Random.seed" ".Table"

Há um objeto .Random.seed no workspace. A janela Environment não exibe objetos cujos nomes se iniciam com “.”.

Vamos novamente ler o conjunto de dados Melanoma do pacote MASS e listar novamente os objetos do workspace. Agora, o conjunto de dados Melanoma aparece na listagem e na janela Environment (figura 10.3).

## [1] "Melanoma"
Ambiente do RStudio mostrando o objeto Melanoma recém carregado.

Figura 10.3: Ambiente do RStudio mostrando o objeto Melanoma recém carregado.

Ao clicarmos sobre o objeto Melanoma na janela Environment, detalhes do conjunto de dados são exibidos (figura 10.4).

Detalhes do objeto Melanoma mostrados na aba Environment do RStudio.

Figura 10.4: Detalhes do objeto Melanoma mostrados na aba Environment do RStudio.

10.2 Espaço de busca de objetos - a função search

Se quisermos listar os 10 primeiros valores da variável age (de Melanoma), usando o comando abaixo:

obteremos uma mensagem de erro parecida com esta: Error in head(age, 10) : objeto ‘age’ não encontrado.

Isso ocorre porque as variáveis de Melanoma não estão diretamente acessíveis ao R. Para acessá-las, precisamos precedê-las por Melanoma$.

##  [1] 76 56 41 71 52 28 77 60 49 68

Como o R localiza os objetos em seu ambiente?

De uma maneira simplificada, há diversos ambientes no R onde os objetos estão localizados. A função search lista o conjunto de ambientes disponíveis no R. Esse conjunto é chamado de espaço de busca, porque objetos nesses ambientes podem ser encontrados a partir do workspace. Vamos entender como isso funciona. Vejamos o resultado da execução da função search (figura 10.5).

Espaço de busca do R.

Figura 10.5: Espaço de busca do R.

A função search lista os ambientes em ordem, formando uma hierarquia onde o ambiente seguinte é o pai do anterior. O ambiente global (.GlobalEnv) é o workspace. O R busca os objetos de acordo com essa hierarquia, começando pelo .GlobalEnv e subindo na hierarquia até encontrar o objeto procurado. Caso o objeto não seja encontrado em nenhum ambiente, uma mensagem de erro é enviada.

Na lista apresentada acima, não se encontra o Melanoma. Como a variável age não existe nos demais ambientes do espaço de busca, uma mensagem de erro foi gerada anteriormente.

Vamos agora executar a função attach(Melanoma):

Ao verificarmos o novo espaço de busca por meio da função search, o resultado é mostrado na figura 10.6.

Espaço de busca do R após “anexar” o conjunto de dados Melanoma.

Figura 10.6: Espaço de busca do R após “anexar” o conjunto de dados Melanoma.

Verificamos que o conjunto de dados Melanoma é listado logo após .GlobalEnv e passa a ser o segundo ambiente a ser verificado na busca por objetos.

Agora a variável age é localizada, sem a necessidade de especificarmos o conjunto de dados a que ela pertence:

## [1] 76 56 41 71 52 28

Observações:
1) Ao alterarmos um data frame após o mesmo ser atachado, isso não irá alterar as variáveis disponíveis diretamente no espaço de busca, porque a função attach realiza uma cópia virtual do data frame. É como se outros objetos fossem criados com os mesmos nomes das variáveis do data frame. Vejamos os exemplos a seguir.

## [1] 100  56  41  71  52  28
## [1] 76 56 41 71 52 28
## [1] "integer"
  1. Da mesma forma, alterações nas variáveis “copiadas” do data frame não serão refletidas nas variáveis dentro do data frame. Vejam os comandos a seguir:
## [1] 100  56  41  71  52  28

Ao executarmos a função detach(Melanoma), o Melanoma é removido do espaço de busca (figura 10.7).

Espaço de busca do R após a remoção do objeto Melanoma.

Figura 10.7: Espaço de busca do R após a remoção do objeto Melanoma.

Podem haver diversos objetos com o mesmo nome no espaço de busca. Nesse caso, o R escolhe o primeiro que encontrar, seguindo a ordem do espaço de busca. Por isso é preciso tomar cuidado com objetos que são definidos fora de um data frame, porque eles serão usados antes de qualquer objeto com o mesmo nome em um data frame “atachado”. Pela mesma razão, não é uma boa ideia dar o mesmo nome a um data frame de uma variável do próprio data frame.

10.3 Especificando o diretório (pasta) corrente

O conteúdo desta e das seções seguintes deste capítulo podem ser visualizados neste vídeo.

Ao importarmos um arquivo do excel para o R (seção 4.2), foi executado o seguinte comando:

Nesse comando, foi necessário especificar o espaço do arquivo no sistema de arquivos. Caso o arquivo estivesse na pasta temp do disco C no Windows, o caminho c:/temp/ teria que ser especificado juntamente com o nome do arquivo. Isso pode ser evitado se a pasta corrente de trabalho for c:/temp.

Para saber qual é o diretório corrente, usa-se a função getwd.

A função setwd especifica a pasta que será tratada como pasta corrente no R. Então poderíamos usar setwd(“c:/temp”) e só precisaríamos especificar o nome do arquivo a ser lido em read_excel.

No RStudio, podemos especificar o diretório corrente por meio da opção (figura 10.8):

\[Session \Rightarrow Set\ Working\ Directory\] (ref:capmenuCurDirRStudio) Menu do RStudio para selecionar o diretório de trabalho corrente.

(ref:capmenuCurDirRStudio)

Figura 10.8: (ref:capmenuCurDirRStudio)

No RStudio, é possível estabelecer o diretório corrente das seguintes formas, lidas de cima para baixo na figura 10.8:
1) o diretório do projeto que está aberto no RStudio, caso tenha algum;
2) o diretório do arquivo que está aberto na janela principal do RStudio (a ser visto no próximo capítulo);
3) o diretório aberto na aba Files do RStudio (área inferior à direita);
4) um diretório selecionado pelo usuário. Com essa opção, uma janela se abre para o usuário selecionar a pasta no sistema de arquivos que será considerada como o diretório corrente.

Para especificarmos o diretório corrente no R Commander, usamos a opção de menu:

\[Arquivo \Rightarrow Altere\ o\ diretorio\ de\ trabalho...\]

A tela mostrada na figura 10.9 permite ao usuário navegar no sistema de arquivos e selecionar o diretório corrente

Caixa de diálogo para selecionar o diretório de trabalho corrente.

Figura 10.9: Caixa de diálogo para selecionar o diretório de trabalho corrente.

10.4 Manipulando o workspace

É possível salvar o workspace em um arquivo a qualquer momento, por meio da função save.image("nome_do_arquivo"). Por exemplo:

Se usarmos a função save.image sem argumentos, o workspace será gravado em um arquivo chamado .RData no diretório corrente.

Para salvarmos o workspace no RStudio, basta acessar a opção de menu abaixo, escolher a pasta e fornecer o nome do arquivo a ser gravado:

\[Session \Rightarrow Save\ Workspace\ As...\]

Analogamente, para salvarmos o workspace no R Commander, basta acessar a opção de menu abaixo, escolher a pasta e fornecer o nome do arquivo a ser gravado:

\[Arquivo \Rightarrow Salvar\ workspace\ do\ R...\] ou

\[Arquivo \Rightarrow Salvar\ workspace\ do\ R\ como...\]

Para carregarmos um workspace em uma sessão do R, usamos a função load("nome_do_arquivo").

O arquivo .RData é carregado por padrão sempre que o R for iniciado em um diretório que contenha um arquivo com esse nome.

Para carregarmos um workspace via RStudio, basta acessar a opção de menu abaixo, escolher a pasta e o arquivo a ser carregado:

\[Session \Rightarrow Load\ Workspace...\]

Ao sairmos do R, sempre será perguntado por padrão se desejamos salvar o workspace.

Os pacotes que foram carregados em uma sessão não são considerados como parte do workspace. Ao iniciarmos uma nova sessão no R com um workspace salvo em disco, será necessário carregar os pacotes novamente.

Os resultados gerados pela execução de funções no R também não são gravados no workspace.

Para limparmos o workspace via RStudio, basta acessar a opção de menu:

\[Session \Rightarrow Clear\ Workspace...\]

Uma tela de confirmação irá perguntar se é isso mesmo que o usuário deseja.

10.5 Removendo objetos do workspace - a função rm

A função rm remove os objetos, que devem ser especificados dentro dos parênteses (separados por vírgulas).

Os objetos do workspace podem ser removidos completamente por meio da função rm(list=ls()). Isso não remove as variáveis cujos nomes começam com um ponto.

## character(0)

Se executarmos a função rm(list=ls(all=T)), todos os objetos do workspace serão removidos incluindo os que começam com ponto. Isso não é recomendável porque esses nomes são usados pelo sistema.

10.6 Histórico de comandos

Cada função ou comando executado no R vai sendo armazenado no histórico da sessão. No RStudio, a aba na janela superior direita, chamada History exibe os comandos anteriores executados na sessão (figura 10.10).

Aba History do RStudio mostrando o histórico dos comandos executados na console do RStudio.

Figura 10.10: Aba History do RStudio mostrando o histórico dos comandos executados na console do RStudio.

As opções na barra de ferramentas da aba History, indicada pelos números na figura 10.10 permitem as seguintes operações com o histórico:
1) carregar um histórico de comandos de um arquivo (função loadhistory("nome_do_arquivo"));
2) salvar o histórico em um arquivo (função savehistory("nome_do_arquivo")). Usualmente, se usa a extensão Rhistory no arquivo;
3) copiar os comandos selecionados no histórico para a console do RStudio;
4) copiar os comandos selecionados no histórico para um arquivo de texto na janela principal do R. Essa janela será vista no próximo capítulo;
5) apagar os os comandos selecionados no histórico;
6) limpar todo o histórico;
7) realizar uma busca por um termo no histórico.

Um arquivo de histórico de comandos é um arquivo de texto e, como tal, pode ser aberto em qualquer editor de texto. A listagem a seguir mostra o histórico de comandos executados neste capítulo:

10.7 Atualizando pacotes

Tanto o núcleo do R quanto os pacotes são frequentemente atualizados. Para atualizar pacotes via RStudio, clicamos no botão Update, na aba Packages (figura 10.11) e, em seguida, selecionamos os pacotes a serem atualizados e clicamos no botão Install Updates (figura 10.12).

Aba Packages do RStudio. A seta verde mostra o botão para atualizar pacotes instalados.

Figura 10.11: Aba Packages do RStudio. A seta verde mostra o botão para atualizar pacotes instalados.

Tela para atualizar pacotes do R no RStudio.

Figura 10.12: Tela para atualizar pacotes do R no RStudio.

10.8 Informações sobre a sessão

A função sessionInfo imprime informação de versão do R, do sistema operacional e pacotes “atachados” ou carregados (figura 10.13). Essas informações são úteis, por exemplo, para registrar o ambiente em que foi executado determinado script, o que pode facilitar a identificação de erros na execução de alguma função.

Informações sobre a sessão corrente do R.

Figura 10.13: Informações sobre a sessão corrente do R.