Passar valores ao programa

Caros, eu queria saber se existe no R alguma "opção" para se passar valores ao programa. Explicando melhor, os meus programas lêem e gravam vários arquivos. Os nomes desses arquivos contém as informações de ano, mes, etc. como no exemplo a seguir: tm0411 = read.csv2("C:\\2009\\Dados Abril 2011.csv") Eu precisava de alguma coisa do tipo informar no início do programa esses valores de ano e de mes e que substituisse no nome do arquivo automaticamente, mais ou menos assim: ano = 2011 mes = "Abril" ... ... ... ... tm0411 = read.csv2("C:\\*&ano*\\Dados *&mes &ano*.csv") É possível? Obrigado, Carlos Mendonça

f = function(mes, ano){ fn = file.path('C:', ano, paste('Dados ', mes, ' ', ano, '.csv', sep='')) read.csv2(fn) } tm0411 = f('Abril', 2011) eh se o file.path falhar para vc (eu nao tenho windows para testar), vc pode substitui-lo por: fn = paste('C:/', ano, '/Dados ', mes, ' ', ano, '.csv', sep='') b 2011/8/2 Carlos Mendonça <csaeslpv@centroin.com.br>
Caros, eu queria saber se existe no R alguma "opção" para se passar valores ao programa. Explicando melhor, os meus
programas lêem e gravam vários arquivos. Os nomes desses arquivos contém as informações de ano, mes, etc. como no exemplo
a seguir:
tm0411 = read.csv2("C:\\2009\\Dados Abril 2011.csv")
Eu precisava de alguma coisa do tipo informar no início do programa esses valores de ano e de mes e que substituisse no nome do
arquivo automaticamente, mais ou menos assim:
ano = 2011 mes = "Abril" ... ... ... ... tm0411 = read.csv2("C:\\*&ano*\\Dados *&mes &ano*.csv")
É possível?
Obrigado,
Carlos Mendonça
_______________________________________________ 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.
-- Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)

A noticia abaixo é relevante para novas versões e ver tendencias no projeto P.J. ------------------------------------------------------------------------ With byte compiler, R 2.14 will be even faster August 2, 2011 By David Smith This article was first published on Revolutions, and kindly contributed to R-bloggers In a presentation at the JSM 2011 conference in Miami yesterday, R core member Luke Tierney revealed that the next major update to R, R 2.14, will feature improved speed when processing interpreted R code, thanks to standard use of the new byte compiler feature. The byte compiler was introduced with R 2.13, but while R developers could use it for their own functions, the standard base and recommended packages were unaffected by the byte compiler. Starting with R 2.14, all of the standard functions and packages in R will be pre-compiled into byte-code, which in some cases can speed up performance by a factor of 5x or more. (In an experimental version of the compiler, which may make it into 2.14, even greater speedups are possible.) The benefits accrue mainly to pure R functions which deal with scalars and very short vectors -- R functions which call out to C code and operations on large vectors won't be affected much. With the new compiler, Tierney says there should be fewer occasions where R programmers need to turn to C or other external languages to speed up R code. In other news for R 2.14, Tierney says that the new version may also make transparent use of parallel processing for some operations on multi-core machines. The colSums and dist functions already include hidden features for parallel processing, and if tests go well features like this may become the default in future versions of R. Features from Tierney's experimental pnmath package, which parallelizes some basic math routines in R, may also make it into the next release. R 2.14 is expected to be released later this year.

Good news! -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica - Prof. Pleno UESC/DCET/Brasil joseclaudio.faria at gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Em 2 de agosto de 2011 15:18, Paulo Justiniano <paulojus@leg.ufpr.br> escreveu:
A noticia abaixo é relevante para novas versões e ver tendencias no projeto P.J.
------------------------------------------------------------------------ With byte compiler, R 2.14 will be even faster August 2, 2011 By David Smith
This article was first published on Revolutions, and kindly contributed to R-bloggers
In a presentation at the JSM 2011 conference in Miami yesterday, R core member Luke Tierney revealed that the next major update to R, R 2.14, will feature improved speed when processing interpreted R code, thanks to standard use of the new byte compiler feature.
The byte compiler was introduced with R 2.13, but while R developers could use it for their own functions, the standard base and recommended packages were unaffected by the byte compiler. Starting with R 2.14, all of the standard functions and packages in R will be pre-compiled into byte-code, which in some cases can speed up performance by a factor of 5x or more. (In an experimental version of the compiler, which may make it into 2.14, even greater speedups are possible.) The benefits accrue mainly to pure R functions which deal with scalars and very short vectors -- R functions which call out to C code and operations on large vectors won't be affected much. With the new compiler, Tierney says there should be fewer occasions where R programmers need to turn to C or other external languages to speed up R code.
In other news for R 2.14, Tierney says that the new version may also make transparent use of parallel processing for some operations on multi-core machines. The colSums and dist functions already include hidden features for parallel processing, and if tests go well features like this may become the default in future versions of R. Features from Tierney's experimental pnmath package, which parallelizes some basic math routines in R, may also make it into the next release.
R 2.14 is expected to be released later this year.
_______________________________________________ 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.

Benilton, obrigado pela ajuda. O código funcionou com fn = paste('C:/', ano, '/Dados ', mes, ' ', ano, '.csv', sep=''), porém o que eu precisava era informar o mes e ano, se possível apenas uma vez e no início do programa e conforme fosse executando, iria fazendo as substituições nos nomes dos arquivos. O meu problema é que como são muitos arquivos pelo meio dos programas, corre o risco da pessoa que executá-lo esquecer de substituir em algum lugar e com isso queimar alguma arquivo de saída ou lê arquivo do ano e/ou mes errado. Um abraço,
Carlos Mendonça

e para isso nao basta executar a funcao f() que passei usando os argumentos apropriados?

ou... ate' usando o codigo q vc tem, nao e' suficiente substituir: tm0411 = read.csv2("C:\\&ano\\Dados &mes &ano.csv") por tm0411 = read.csv2(paste('C:/', ano, '/Dados ', mes, ' ', ano, '.csv', sep='')) imagino q deva ser mais simples para o workflow q vc tem... b

Benilton, usei o código dessa maneira f = function(mes, ano){ fn1 = paste('F:\\', ano, '\\Arquivo do Programa 3.csv', sep='') read.csv2(fn1) fn2 = paste('F:\\', ano, '\\Arquivo do Programa 2_Total.csv', sep='') read.csv2(fn2) fn3 = paste('F:\\', ano, '\\Arquivo do Programa 3_sem informação.csv', sep='') read.csv2(fn3) } tm0411 = f('Abril', 2009) E o resultado é que eu só fiquei com informações do último arquivo (fn3). Em 2 de agosto de 2011 15:26, Carlos Mendonça <csaeslpv@centroin.com.br>escreveu:
Benilton, obrigado pela ajuda. O código funcionou com fn = paste('C:/', ano, '/Dados ', mes, ' ', ano, '.csv', sep=''), porém
o que eu precisava era informar o mes e ano, se possível apenas uma vez e no início do programa e conforme fosse executando, iria
fazendo as substituições nos nomes dos arquivos. O meu problema é que como são muitos arquivos pelo meio dos programas,
corre o risco da pessoa que executá-lo esquecer de substituir em algum lugar e com isso queimar alguma arquivo de saída ou lê
arquivo do ano e/ou mes errado.
Um abraço,
Carlos Mendonça
-- Um abraço, Mendonça

Verifique algum documento de introducao a criacao de funcoes para maiores detalhes... abaixo, a forma corrigida do que vc espera: f = function(mes, ano){ fn1 = paste('F:\\', ano, '\\Arquivo do Programa 3.csv', sep='') f1 = read.csv2(fn1) fn2 = paste('F:\\', ano, '\\Arquivo do Programa 2_Total.csv', sep='') f2 = read.csv2(fn2) fn3 = paste('F:\\', ano, '\\Arquivo do Programa 3_sem informação.csv', sep='') f3 = read.csv2(fn3) list(arq1=f1, arq2=f2, arq3=f3) } tm0411 = f('Abril', 2009) ## tm0411 contera' as informacoes dos 3 arquivos ## tmp0411[[1]] ou tmp0411[['arq1']] contera info do arquivo 1 ## etc...
participantes (4)
-
Benilton Carvalho
-
Carlos Mendonça
-
Jose Claudio Faria
-
Paulo Justiniano