Leitura de vários arquivos

*Caros, estou há algum tempo pesquisando no histórico da lista e nao encontro. Estou com uma rotina que diariamente tenho que importar vários arquivos. Existe alguma forma de importar todas para data.frames diferentes cada um com seu nome original?! Ex.: Arq1.txt ar1312.txt lll.txt Arq1 <- read.table('Arq1.txt') ar1312 <- **read.table('ar1312.txt') . . . Como os recebo via ftp e cada dia com um nome mais criativo que o outro fica complicado. Já uso o dir() para listar e salvar os nomes. Assim vou num editor de texto e manipulo esses nomes, entretanto, gostaria de saber se existiria uma forma de importalos mais rápido... ** *Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907

Codigo nao testado, mas deve ser algo como o seguinte: sapply(fns, function(x){ assign(gsub("\\.txt", "", x), read.table(x), envir=.GlobalEnv); NULL}) b

esqueci de dizer que 'fns' eh um vetor com o nome dos arquivos: fns = list.files(patt="\\.txt") b

Lembrando que você deve dar um jeito de fazer com que os arquivos tenham nomes válidos (10.txt não é válido por exemplo). Uma forma é fazer isso fora do script, na hora de salvar o arquivo. Outra forma é usando a make.names(), mas aí você teria de dar um jeito de ligar o novo nome ao arquivo correspondente.
make.names("10") [1] "X10"
2011/8/26 Benilton Carvalho <beniltoncarvalho@gmail.com>:
esqueci de dizer que 'fns' eh um vetor com o nome dos arquivos:
fns = list.files(patt="\\.txt")
b _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Com ?assign, ?gsub e ?make.names você deve conseguir. 2011/8/26 Leandro Marino <leandromarino@leandromarino.com.br>:
Caros,
estou há algum tempo pesquisando no histórico da lista e nao encontro.
Estou com uma rotina que diariamente tenho que importar vários arquivos. Existe alguma forma de importar todas para data.frames diferentes cada um com seu nome original?!
Ex.: Arq1.txt ar1312.txt lll.txt
Arq1 <- read.table('Arq1.txt') ar1312 <- read.table('ar1312.txt') . . .
Como os recebo via ftp e cada dia com um nome mais criativo que o outro fica complicado. Já uso o dir() para listar e salvar os nomes. Assim vou num editor de texto e manipulo esses nomes, entretanto, gostaria de saber se existiria uma forma de importalos mais rápido...
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Leanddro alem das postadas aqui e funcoes do R que acessam o systema operacional (dir(), inlink() etc) vale lembrar a solucao genérica disponiviel via system() Este comando permite voce executar comandos do SO de dentro do R Vou seguir exemplos compativies com linux aqui mas o comando funciona em outros OS's com as devidas adaptacoes Por exemplo: arquivos <- system("ls *.txt", intern=T) ## tem outros forms direto no no R gera um vetoir de nomes de arquivos com e sem extensao voce agora pode dar um lapply com assign para criar objetos lapply(arquivos, function(x) assign(x, value = read.table(x)) adaptacoes podem remover o .txt por exemplo arquivos <- system("`basename ls *.txt .txt'", intern=T) ## tem outros forms direto no lapply(arquivos, function(x) assign(x, value = read.table(paste(x, ".txt", sep="")) On Fri, 26 Aug 2011, Leandro Marino wrote:
Caros,
estou há algum tempo pesquisando no histórico da lista e nao encontro.
Estou com uma rotina que diariamente tenho que importar vários arquivos. Existe alguma forma de importar todas para data.frames diferentes cada um com seu nome original?!
Ex.: Arq1.txt ar1312.txt lll.txt
Arq1 <- read.table('Arq1.txt') ar1312 <- read.table('ar1312.txt') . . .
Como os recebo via ftp e cada dia com um nome mais criativo que o outro fica complicado. Já uso o dir() para listar e salvar os nomes. Assim vou num editor de texto e manipulo esses nomes, entretanto, gostaria de saber se existiria uma forma de importalos mais rápido...
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907

Leandro, Você pode salvar todos numa lista: l <- sapply(dir(patt = "txt$"), read.table, simplify = FALSE) e/ou convertê-lo para um environment: list2env(l) 2011/8/26 Leandro Marino <leandromarino@leandromarino.com.br>:
Caros,
estou há algum tempo pesquisando no histórico da lista e nao encontro.
Estou com uma rotina que diariamente tenho que importar vários arquivos. Existe alguma forma de importar todas para data.frames diferentes cada um com seu nome original?!
Ex.: Arq1.txt ar1312.txt lll.txt
Arq1 <- read.table('Arq1.txt') ar1312 <- read.table('ar1312.txt') . . .
Como os recebo via ftp e cada dia com um nome mais criativo que o outro fica complicado. Já uso o dir() para listar e salvar os nomes. Assim vou num editor de texto e manipulo esses nomes, entretanto, gostaria de saber se existiria uma forma de importalos mais rápido...
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O
participantes (5)
-
Benilton Carvalho
-
Gustavo Carvalho
-
Henrique Dallazuanna
-
Leandro Marino
-
Paulo Justiniano