O R pode interagir com o sistema de arquivos e o sistema operacional. Nesta seção vamos ver algumas das funcionalidades que informam sobre o ambiente de trabalho no R e também utilidades que podem facilitar o manuseio do programa.
Algumas implementações podem ser específicas para cada sistema operacional (SO). Por exemplo o diretório de trabalho ("workspace") pode ser definido via menu no Windows. Entretanto vamos aqui dar preferência a funções que independem do SO. Os exemplos a seguir foram rodados em LINUX mas também podem ser usados em outros SO.
Informações detalhadas sobre a versão do R e plataforma (sistema operacional) são retornadas pelo objeto abaixo. Note que é sempre útil informar a saída deste objeto quando utilizando listas de emails do projeto. As saídas retornadas na forma de uma list podem ainda ser úteis para escrever programas/rotinas que dependam destas informações
> R.version
_ platform x86_64-pc-linux-gnu arch x86_64 os linux-gnu system x86_64, linux-gnu status major 4 minor 6.1 year 2026 month 06 day 24 svn rev 90187 language R version.string R version 4.6.1 (2026-06-24) nickname Happy Hop
Outros comandos relevantes sobre o sistema e recursos, cuja saída não mostramos aqui incluem:
Outro comando útil é sessionInfo() que informa sobre o sistema operacional e locales (linguagem utilizada pelo sistema), a versão do R, pacotes carregados e também os recursos (pacotes) disponíveis. As saídas das funções mencionadas podem ser usadas quando informando/reportando problemas encontrados em aplicações e/ou quando escrevendo funções que possuam funcionalidades e opções que dependam destas informações.
> sessionInfo()
R version 4.6.1 (2026-06-24) Platform: x86_64-pc-linux-gnu Running under: Ubuntu 24.04.4 LTS Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0 LAPACK version 3.12.0 locale: [1] LC_CTYPE=pt_BR.UTF-8 LC_NUMERIC=C LC_TIME=pt_BR.UTF-8 [4] LC_COLLATE=pt_BR.UTF-8 LC_MONETARY=pt_BR.UTF-8 LC_MESSAGES=pt_BR.UTF-8 [7] LC_PAPER=pt_BR.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=C time zone: America/Sao_Paulo tzcode source: system (glibc) attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] knitr_1.51 loaded via a namespace (and not attached): [1] compiler_4.6.1 cli_3.6.6 tools_4.6.1 otel_0.2.0 xfun_0.57 [6] rlang_1.2.0 evaluate_1.0.5
Ao iniciar o R é aberta ou iniciada uma área de trabalho ("workspace") onde os objetos desta sessão poderão ser gravados. A localização "default"desta área de trabalho depende do sistema operacional, permissões etc. Por exemplo, no LINUX é o diretório de onde o R foi iniciado. No Windows é um diretório onde o R foi instalado.
Nos comandos a seguir mostramos como verificar qual o diretório de trabalho sendo usado, guardamos esta informação num objeto, verificamos qual o diretório onde o R foi instalado e como mudar o diretório de trabalho.
> getwd()
[1] "/home/paulojus/mateRial/aulasR/Rnw"
> wdir <- getwd() > wdir
[1] "/home/paulojus/mateRial/aulasR/Rnw"
> R.home()
[1] "/usr/lib/R"
> setwd(R.home()) > getwd()
[1] "/usr/lib/R"
> setwd(path.expand("~")) > getwd()
[1] "/home/paulojus"
O R automaticamente mantém um diretório temporário para uso em cada sessão e dentro deste um arquivo. As funções a seguir mostram como obter o caminho e nome do diretório e arquivo temporários.
> tempdir()
[1] "/tmp/RtmpHPhk0i"
> tempfile()
[1] "/tmp/RtmpHPhk0i/file74aef236f8e4c"
Há uma diversidade de funções para interagir com o diretórios e arquivos. Por exemplo dir() vai listar o conteúdo do diretório, e possui vários argumentos para seleção. Informações sobre cada elemento do diretório podem ser obtidas com file.info()
> getwd()
[1] "/home/paulojus/mateRial/aulasR/Rnw"
> dir("../")
[1] "aulasR.aux" "aulasR.bbl" "aulasR.blg" [4] "aulasR.log" "aulasR.out" "aulasR.pdf" [7] "aulasR.tex" "aulasR.tex~" "codigoR" [10] "compila_rnw.sh" "dados" "ExSweave" [13] "figuras" "Rembrapa.pdf" "Rnw" [16] "Rplots.pdf" "setup_knitr.R" "tex" [19] "verifica_pacotes.R"
> setwd(R.home()) > dir()
[1] "bin" "COPYING" "etc" "lib" "library" [6] "modules" "site-library" "SVN-REVISION"
> args(dir)
function (path = ".", pattern = NULL, all.files = FALSE, full.names = FALSE, recursive = FALSE, ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE, fixed = FALSE) NULL
> file.info("bin")
size isdir mode mtime ctime atime uid bin 4096 TRUE 755 2026-08-31 10:51:23 2026-08-31 10:51:23 2026-09-08 21:31:50 0 gid uname grname bin 0 root root
> file.info("bin")$isdir
[1] TRUE
> dir(path="bin")
[1] "BATCH" "build" "check" "COMPILE" "config" [6] "exec" "INSTALL" "javareconf" "libtool" "LINK" [11] "mkinstalldirs" "pager" "R" "Rcmd" "Rd2pdf" [16] "Rdconv" "Rdiff" "REMOVE" "Rprof" "Rscript" [21] "rtags" "SHLIB" "Stangle" "Sweave"
> dir(pattern="COPY")
[1] "COPYING"
> dir(path="doc")
character(0)
> dir(path="doc", full=TRUE)
character(0)
É possível efetuar operações do sistema operacional tais como criar, mover, copiar e remover arquivos e/ou diretórios a partir do R.
> setwd(path.expand("~")) > file.exists("foo.txt")
[1] TRUE
> file.create("foo.txt")
[1] TRUE
> file.exists("foo.txt")
[1] TRUE
> file.rename("foo.txt", "ap.txt")
[1] TRUE
> file.exists("foo.txt")
[1] FALSE
> file.exists(c("foo.txt","ap.txt"))
[1] FALSE TRUE
> file.copy("ap.txt","foo.txt")
[1] TRUE
> file.exists(c("foo.txt","ap.txt"))
[1] TRUE TRUE
> file.remove("ap.txt")
[1] TRUE
> file.exists(c("foo.txt","ap.txt"))
[1] TRUE FALSE
Da mesma forma é também possível criar e manipular diretórios. Note que a opção recursive=TRUE deve ser usada com muito cuidado pois apaga todo o conteúdo do diretório.
> getwd()
[1] "/home/paulojus/mateRial/aulasR/Rnw"
> dir.create("~/meu.dir") > file.copy("foo.txt", "~/meu.dir")
Warning in file.copy("foo.txt", "~/meu.dir"): problem copying ./foo.txt to /home/paulojus/meu.dir/foo.txt: Arquivo ou diretório inexistente
[1] FALSE
> dir("~/meu.dir")
character(0)
> unlink("~/meu.dir", recursive=TRUE) > setwd(wdir) # retorna ao diretório de trabalho original
Os exemplos acima são na verdade funções que passam comandos para o sistema operacional, seja ele qual for. De forma mais geral comandos do sistema operacional podem ser executados diretamente do R com a função system(), mas a sintaxe do comando fica obviamente dependente do sistema operacional usado (linux, unix, Mac, etc). A seguir ilustramos comandos usados no LINUX. Uma opção interessante é dada pelo argumento intern = TRUE que faz com que o resultado do comando seja convertido num objeto do R, como no exemplo abaixo onde o objeto mdir passa a ser um vetor de caracteres com nomes de diretório de trabalho e mais abaixo o objeto arqs é um vetor com os nomes de todos os arquivos existentes no diretório de trabalho.
> system("pwd") > mdir <- system("pwd", intern=TRUE) > mdir > system("mkdir FStest.dir") > system("touch FStest.dir/arquivo.txt") > system("ls FStest.dir") > arqs <- system("ls d*.Rnw", intern=TRUE) > arqs > system("rm -rf FStest.dir")