Como manipular arquivos em R

Ocasionalmente, você pode querer escrever um script em R que irá percorrer uma determinada pasta e executar ações em todos os dados nos arquivos ou um subconjunto de arquivos na pasta.

Para obter uma lista de arquivos em uma pasta específica, use list.files () ou dir (). Estas duas funções fazem exatamente a mesma coisa, mas por razões de compatibilidade com versões anteriores, a mesma função tem dois nomes:

> List.files (file.path ( "F:", "git", "roxygen2")) [1] "roxygen2" "roxygen2.Rcheck" [3] "roxygen2_2.0.tar.gz" "roxygen2_2.1 .tar.gz "
FunçãoDescrição
Iist.filesLista os arquivos em um diretório.
list.dirsLista subdiretórios de um diretório.
o arquivo existeTesta se um arquivo específico existe em um local.
File.CreateCria um arquivo.
file.removeExclui os arquivos (e diretórios em sistemas operacionais Unix).
tempfileRetorna um nome para um arquivo temporário. Se você criar um file- por exemplo, com File.Create ()ou write.table () usando este voltou nome- R criará um arquivo em uma pasta temporária.
tempdirRetorna o caminho do arquivo de uma pasta temporária no seu sistema de arquivos.

Em seguida, você começa a exercer todo o seu conhecimento sobre como trabalhar com arquivos. No próximo exemplo, você primeiro criar um arquivo temporário, em seguida, salvar uma cópia do íris quadro de dados a este arquivo. Para testar se o arquivo está no disco, você, em seguida, ler o arquivo recém-criado para uma nova variável e inspecionar esta variável. Finalmente, você excluir o arquivo temporário do disco.

Comece usando o tempfile () função para retornar um nome a uma cadeia de caracteres com o nome de um arquivo em uma pasta temporária em seu sistema:

> my.file lt; - tempfile ()> my.file [1] "C: Users Andrie AppData local Temp RtmpGYeLTj file14d4366b6095"

Observe que o resultado é puramente uma cadeia de caracteres, não um arquivo. Este arquivo ainda não existe em qualquer lugar. Em seguida, você salvar uma cópia do quadro de dados íris para meu arquivo usando o write.csv () função. Em seguida, use list.files () para ver se R criou o arquivo:

> Write.csv (íris, arquivo = my.file)> list.files (tempdir ()) [1] "file14d4366b6095"

Como você pode ver, R criou o arquivo. Agora você pode usar read.csv () para importar os dados para uma nova variável chamada file.iris:

> file.iris lt; - read.csv (my.file)

Usar str () para investigar a estrutura de file.iris. Como esperado file.iris é uma quadro de dados de 150 observações e seis variáveis. Seis variáveis, você diz? Sim, seis, embora o original íris só tem cinco colunas.

O que aconteceu aqui foi que o valor padrão do argumento row.names do read.csv () é row.names = TRUE. (Você pode confirmar isso, tendo um olhar mais atento sobre a Ajuda ?read.csv ().) Então, R salvou os nomes de linha originais de íris para uma nova coluna chamada x:

> Str (file.iris) 'data.frame': 150 obs. de 6 variáveis: $ X: int 1 2 3 4 5 6 7 8 9 10 ... $ Sepal.Length: num 5,1 4,9 4,7 4,6 5 5,4 4,6 5 4,4 4,9 ... $ Sepal.Width: num 3,5 3 3,2 3,1 3,6 3,9 3,4 3,4 2,9 3,1 ... $ Petal.Length: num 1,4 1,4 1,3 1,5 1,4 1,7 1,4 1,5 1,4 1,5 ... $ Petal.Width: num 0,2 0,2 ​​0,2 ​​0,2 ​​0,2 ​​0,4 0,3 0,2 0,2 ​​0,1 ... $ Espécie: factor de w / 3 níveis "setosa", "versicolor", ..: 1 1 1 1 1 1 1 1 1 1 ...

Para deixar o seu sistema de arquivos na sua ordem original, você pode usar file.remove () para excluir o arquivo temporário:

> Caráter file.remove (my.file)> list.files (tempdir ()) (0)

Como você pode ver, o resultado de list.files () é uma cadeia de caracteres vazia, porque o arquivo não existe mais nessa pasta.

menu