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.
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).
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"
Ao clicarmos sobre o objeto Melanoma na janela Environment, detalhes do conjunto de dados são exibidos (figura 10.4).
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).
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.
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).
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.
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
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).
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).
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.