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.

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).

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"

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).

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).

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.

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.
Melanoma$age[1] = 100 # alterando o primeiro valor da
# variável age dentro do Melanoma
head(Melanoma$age)
## [1] 100 56 41 71 52 28
Melanoma <- within(Melanoma, { # convertendo a variável sex
# do Melanoma para factor
sex <- factor(sex, labels=c('masculino','feminino'))
})
head(age) # a variável age no workspace não é alterada
## [1] 76 56 41 71 52 28
## [1] "integer"
- 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:
age[2] = 90 # alterando o segundo valor da variável age
head(Melanoma$age) # a variável age dentro do Melanoma não é alterada
## [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).

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.

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

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:
save.image("/home/sergio/teste.Rdata") # o worskpace será gravado no
# arquivo teste.Rdata no
# diretório /home/sergio
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).

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:
ls()
ls(all=TRUE)
library(MASS)
data(Melanoma, package="MASS")
ls()
head(age, 10)
head(Melanoma$age, 10)
search()
attach(Melanoma)
search()
head(age)
Melanoma$age[1] = 100
head(Melanoma$age)
Melanoma <- within(Melanoma, { # convertendo a variável sex para factor
sex <- factor(sex, labels=c('masculino','feminino'))
})
head(age)
class(sex)
detach(Melanoma)
search()
save.image("/home/sergio/teste.Rdata")
load("/home/sergio/teste.Rdata")
rm(melanoma_idoso)
melanoma_idoso
rm(list=ls())
ls()
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).

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

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.

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