
Lista, boa noite. Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso. fico no aguardo, att, Fernando H

Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc *Pedro Henrique Araújo Sobral* *Estudante Eng. de Computação* Em 20 de março de 2011 19:11, Fernando Henrique Toledo < fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Pedro, Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda. att, Fernando H 2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
*Pedro Henrique Araújo Sobral* *Estudante Eng. de Computação*
Em 20 de março de 2011 19:11, Fernando Henrique Toledo < fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!. Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 ________________________________ De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 20 de Março de 2011 21:30:55 Assunto: Re: [R-br] Implementação em C Pedro, Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda. att, Fernando H 2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com> Acredito que o seguinte site resolverá o teu problema:
http://leg.ufpr.br/doku.php/seminarios:minicursorc
Pedro Henrique Araújo Sobral Estudante Eng. de Computação
Em 20 de março de 2011 19:11, Fernando Henrique Toledo <fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Fábio, bom dia. Para melhor localiza-lo, estou realizando um estudo de genética e melhoramento via simulação computacional. Portanto fui contruindo funções que mimetizam a situação que quero representar e em uma dessas função a necessidade de realizar cruzamentos entre vários indivíduos (também simulados). Para isso construí a função abaixo em que se constroem uma matriz com as combinações de cruzamentos a serem realizados, através de um for() a função corre por essa matriz e procura o respectivo indivíduo em um data.frame que foi o resultado de outra função anterior. Nas outras função quando possivel (no meu entendimento) utilizei apply() para otimizar o tempo, mas nesse caso específico não consegur visualizar como. Nas condições que pretendo usar essa função, haverá a realização de cerca de 45 cruzamentos e no programa "main" da simulação isso irá ser empregado cerca de 600000 vezes! Por isso a minha preocupação, pois a implementação do jeito que está pela função system.time() dura em torno de 45 segundos, o que acho um pouco impeditivo. Veja a implementação específica dessa função, note que nela a emprego de outras função que eu criei que não vem ao caso. att, Fernando H # _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo } 2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!.
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076
------------------------------ *De:* Fernando Henrique Toledo <fernandohtoledo@gmail.com> *Para:* r-br@listas.c3sl.ufpr.br *Enviadas:* Domingo, 20 de Março de 2011 21:30:55 *Assunto:* Re: [R-br] Implementação em C
Pedro,
Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda.
att, Fernando H
2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
*Pedro Henrique Araújo Sobral* *Estudante Eng. de Computação*
Em 20 de março de 2011 19:11, Fernando Henrique Toledo < fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

faltou a definicao da funcao cruz().... 2011/3/21 Fernando Henrique Toledo <fernandohtoledo@gmail.com>:
Fábio, bom dia.
Para melhor localiza-lo, estou realizando um estudo de genética e melhoramento via simulação computacional. Portanto fui contruindo funções que mimetizam a situação que quero representar e em uma dessas função a necessidade de realizar cruzamentos entre vários indivíduos (também simulados).
Para isso construí a função abaixo em que se constroem uma matriz com as combinações de cruzamentos a serem realizados, através de um for() a função corre por essa matriz e procura o respectivo indivíduo em um data.frame que foi o resultado de outra função anterior.
Nas outras função quando possivel (no meu entendimento) utilizei apply() para otimizar o tempo, mas nesse caso específico não consegur visualizar como.
Nas condições que pretendo usar essa função, haverá a realização de cerca de 45 cruzamentos e no programa "main" da simulação isso irá ser empregado cerca de 600000 vezes! Por isso a minha preocupação, pois a implementação do jeito que está pela função system.time() dura em torno de 45 segundos, o que acho um pouco impeditivo. Veja a implementação específica dessa função, note que nela a emprego de outras função que eu criei que não vem ao caso.
att, Fernando H
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!.
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076
________________________________ De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 20 de Março de 2011 21:30:55 Assunto: Re: [R-br] Implementação em C
Pedro,
Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda.
att, Fernando H
2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
Pedro Henrique Araújo Sobral Estudante Eng. de Computação
Em 20 de março de 2011 19:11, Fernando Henrique Toledo <fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

alem de combinations() e soma.vg()... se alem disso, vc nos der um exemplo de dados de entrada e saida esperada, tenho certeza que alguma sugestao interessante deve surgir... b 2011/3/21 Benilton Carvalho <beniltoncarvalho@gmail.com>:
faltou a definicao da funcao cruz()....
2011/3/21 Fernando Henrique Toledo <fernandohtoledo@gmail.com>:
Fábio, bom dia.
Para melhor localiza-lo, estou realizando um estudo de genética e melhoramento via simulação computacional. Portanto fui contruindo funções que mimetizam a situação que quero representar e em uma dessas função a necessidade de realizar cruzamentos entre vários indivíduos (também simulados).
Para isso construí a função abaixo em que se constroem uma matriz com as combinações de cruzamentos a serem realizados, através de um for() a função corre por essa matriz e procura o respectivo indivíduo em um data.frame que foi o resultado de outra função anterior.
Nas outras função quando possivel (no meu entendimento) utilizei apply() para otimizar o tempo, mas nesse caso específico não consegur visualizar como.
Nas condições que pretendo usar essa função, haverá a realização de cerca de 45 cruzamentos e no programa "main" da simulação isso irá ser empregado cerca de 600000 vezes! Por isso a minha preocupação, pois a implementação do jeito que está pela função system.time() dura em torno de 45 segundos, o que acho um pouco impeditivo. Veja a implementação específica dessa função, note que nela a emprego de outras função que eu criei que não vem ao caso.
att, Fernando H
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!.
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076
________________________________ De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 20 de Março de 2011 21:30:55 Assunto: Re: [R-br] Implementação em C
Pedro,
Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda.
att, Fernando H
2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
Pedro Henrique Araújo Sobral Estudante Eng. de Computação
Em 20 de março de 2011 19:11, Fernando Henrique Toledo <fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Fernando, Uma das opções e mesmo tentar melhorar a função, outra e fazer ela ser executada em paralelo, com o uso do pacote 'multicore' que tem a função mclapply que já usei, nela vc pode definir o número de cores a ser utilizado, com o for que vc esta usando, mesmo que vc tem um pc como processador i7 por exemplo que tem 8 nucleos de processamento, seu processo é rodado em apenas 1 deixando os outros 7 na folga. a implementação do mclapply é muito semelhante com o lapply so muda uns argumentos para definir o numero de cores. OBS: multicore não funciona em linux Éder
Fábio, bom dia.
Para melhor localiza-lo, estou realizando um estudo de genética e melhoramento via simulação computacional. Portanto fui contruindo funções que mimetizam a situação que quero representar e em uma dessas função a necessidade de realizar cruzamentos entre vários indivíduos (também simulados).
Para isso construí a função abaixo em que se constroem uma matriz com as combinações de cruzamentos a serem realizados, através de um for() a função corre por essa matriz e procura o respectivo indivíduo em um data.frame que foi o resultado de outra função anterior.
Nas outras função quando possivel (no meu entendimento) utilizei apply() para otimizar o tempo, mas nesse caso específico não consegur visualizar como.
Nas condições que pretendo usar essa função, haverá a realização de cerca de 45 cruzamentos e no programa "main" da simulação isso irá ser empregado cerca de 600000 vezes! Por isso a minha preocupação, pois a implementação do jeito que está pela função system.time() dura em torno de 45 segundos, o que acho um pouco impeditivo. Veja a implementação específica dessa função, note que nela a emprego de outras função que eu criei que não vem ao caso.
att, Fernando H
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!.
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076
------------------------------ *De:* Fernando Henrique Toledo <fernandohtoledo@gmail.com> *Para:* r-br@listas.c3sl.ufpr.br *Enviadas:* Domingo, 20 de Março de 2011 21:30:55 *Assunto:* Re: [R-br] Implementação em C
Pedro,
Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda.
att, Fernando H
2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
*Pedro Henrique Araújo Sobral* *Estudante Eng. de Computação*
Em 20 de março de 2011 19:11, Fernando Henrique Toledo < fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

OBS: não funciona em windows, em linux funciona
Fernando,
Uma das opções e mesmo tentar melhorar a função, outra e fazer ela ser executada em paralelo, com o uso do pacote 'multicore' que tem a função mclapply que já usei, nela vc pode definir o número de cores a ser utilizado, com o for que vc esta usando, mesmo que vc tem um pc como processador i7 por exemplo que tem 8 nucleos de processamento, seu processo é rodado em apenas 1 deixando os outros 7 na folga. a implementação do mclapply é muito semelhante com o lapply so muda uns argumentos para definir o numero de cores. OBS: multicore não funciona em linux Éder
Fábio, bom dia.
Para melhor localiza-lo, estou realizando um estudo de genética e melhoramento via simulação computacional. Portanto fui contruindo funções que mimetizam a situação que quero representar e em uma dessas função a necessidade de realizar cruzamentos entre vários indivíduos (também simulados).
Para isso construí a função abaixo em que se constroem uma matriz com as combinações de cruzamentos a serem realizados, através de um for() a função corre por essa matriz e procura o respectivo indivíduo em um data.frame que foi o resultado de outra função anterior.
Nas outras função quando possivel (no meu entendimento) utilizei apply() para otimizar o tempo, mas nesse caso específico não consegur visualizar como.
Nas condições que pretendo usar essa função, haverá a realização de cerca de 45 cruzamentos e no programa "main" da simulação isso irá ser empregado cerca de 600000 vezes! Por isso a minha preocupação, pois a implementação do jeito que está pela função system.time() dura em torno de 45 segundos, o que acho um pouco impeditivo. Veja a implementação específica dessa função, note que nela a emprego de outras função que eu criei que não vem ao caso.
att, Fernando H
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!.
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076
------------------------------ *De:* Fernando Henrique Toledo <fernandohtoledo@gmail.com> *Para:* r-br@listas.c3sl.ufpr.br *Enviadas:* Domingo, 20 de Março de 2011 21:30:55 *Assunto:* Re: [R-br] Implementação em C
Pedro,
Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda.
att, Fernando H
2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
*Pedro Henrique Araújo Sobral* *Estudante Eng. de Computação*
Em 20 de março de 2011 19:11, Fernando Henrique Toledo < fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Eder, vc quis dizer que o multicore so funciona em linux (e similares, ie., qq OS com POSIX), ne'? :) b 2011/3/21 <eder@leg.ufpr.br>:
Fernando,
Uma das opções e mesmo tentar melhorar a função, outra e fazer ela ser executada em paralelo, com o uso do pacote 'multicore' que tem a função mclapply que já usei, nela vc pode definir o número de cores a ser utilizado, com o for que vc esta usando, mesmo que vc tem um pc como processador i7 por exemplo que tem 8 nucleos de processamento, seu processo é rodado em apenas 1 deixando os outros 7 na folga. a implementação do mclapply é muito semelhante com o lapply so muda uns argumentos para definir o numero de cores. OBS: multicore não funciona em linux Éder
Fábio, bom dia.
Para melhor localiza-lo, estou realizando um estudo de genética e melhoramento via simulação computacional. Portanto fui contruindo funções que mimetizam a situação que quero representar e em uma dessas função a necessidade de realizar cruzamentos entre vários indivíduos (também simulados).
Para isso construí a função abaixo em que se constroem uma matriz com as combinações de cruzamentos a serem realizados, através de um for() a função corre por essa matriz e procura o respectivo indivíduo em um data.frame que foi o resultado de outra função anterior.
Nas outras função quando possivel (no meu entendimento) utilizei apply() para otimizar o tempo, mas nesse caso específico não consegur visualizar como.
Nas condições que pretendo usar essa função, haverá a realização de cerca de 45 cruzamentos e no programa "main" da simulação isso irá ser empregado cerca de 600000 vezes! Por isso a minha preocupação, pois a implementação do jeito que está pela função system.time() dura em torno de 45 segundos, o que acho um pouco impeditivo. Veja a implementação específica dessa função, note que nela a emprego de outras função que eu criei que não vem ao caso.
att, Fernando H
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Se vc falar melhor sobre o que vc está querendo implementar e postar o código, muita coisa pode ser otimizada no próprio R sem o uso de funções em C ou fortran!.
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076
------------------------------ *De:* Fernando Henrique Toledo <fernandohtoledo@gmail.com> *Para:* r-br@listas.c3sl.ufpr.br *Enviadas:* Domingo, 20 de Março de 2011 21:30:55 *Assunto:* Re: [R-br] Implementação em C
Pedro,
Obrigado pela dica, o material vai dar alguma noção sobre a coisa toda.
att, Fernando H
2011/3/20 Pedro Henrique <pedro.sobralxv@gmail.com>
Acredito que o seguinte site resolverá o teu problema: http://leg.ufpr.br/doku.php/seminarios:minicursorc
*Pedro Henrique Araújo Sobral* *Estudante Eng. de Computação*
Em 20 de março de 2011 19:11, Fernando Henrique Toledo < fernandohtoledo@gmail.com> escreveu:
Lista, boa noite.
Gostaria de pedir a quem possa algumas dicas e tutoriais que me posibilitem um maior entendimento do processo de implementação de funções em C e uso dessas mesmas no ambiente R! Na verdade não programo em C, mas estou enfrentando certos problemas com algumas funções que crio no R, pois o tempo de processamento delasestá um pouco impeditivo. Li alguns tutoriais do R e do GCC, mas ainda não tenho conhecimento suficiente para enveredar por esse lado. Assim gostaria de saber da experiencia de vocês quanto a isso.
fico no aguardo, att, Fernando H
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Senhores, bom dia. A simulação que pretendo realizar implementei através das funções que estão listadas abaixo, a combinations é do pacote gtools, necessáriamente queria só melhorar o tempo de processamento do função dialelo, especificamente no for() que corre pela matriz de combinações. Fui rodando odas as etapas da função e detectei justamente nesse ponto o gargalo do calculo. att, Fernando H # _____________________________________________________________________ #_ OK #_ Função para cálculo do valor genotípico #_ Parâmetros: indv = indvíduo sob análise # gmd = grau médio de dominância #______________________________________________________________________ soma.vg <- function(indv, gmd){ # argumentos da função h <- gmd # atribui o desvio de dominância ao heterozigoto gen <- numeric() # cria um vetor qualquer - armazena os valores genotípicos for(i in 1:length(indv)){ # 'laço' - passa a regra p/ cada loco # se o loco for igual a 'r' (recessivo) valor genotípico recebe -1 # se o loco for igual a 'h' (heterozigoto) valor genotípico recebe gmd # se o loco for igual a 'd' (dominante) valor genotípico recebe 1 if(indv[i] == 'r') { gen[i] <- -1 } else { if(indv[i] == 'h') gen[i] <- h else gen[i] <- 1 } } return(sum(gen)) # retorna a soma dos valores genotípcos por loco } # _____________________________________________________________________ #_ OK #_ Função para regra da segregação #_ Parâmetros: pai e mãe = indvíduos sob análise (cruzando) #______________________________________________________________________ segregacao <- function(pai, mae) { # argumentos da função filho <- numeric() # cria um vetor qualquer - armazena os valores genotípicos do filho for(i in 1:length(pai)) { # 'laço' - passa a regra de segregação p/ cada loco # se ambos pais são homozigotos dominantes (d), filho é dominante (d) # se um pai é dominante e o outro é heterozigoto (h) filho pode ser 'h' ou 'd' 50% p/ cada # se ambos pais são heterozigoto segregação 1:2:1 'd', 'h', e 'r' # se um pai é dominante e o outro é recessivo filho é heterozigoto # se um pai é reccessivo e o outro é heterozigoto filho pode ser 'r' ou 'r' 50% p/ cada # se ambos pais são recessivos filho é recessivo if(pai[i] == 'd' & mae[i] == 'd') filho[i] <- 'd' if(pai[i] == 'd' & mae[i] == 'h' | pai[i] == 'h' & mae[i] == 'd'){ u <- runif(1) if(u <= .5) filho[i] <- 'd' else filho[i] <- 'h' } if(pai[i] == 'd' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'd'){ filho[i] <- 'h' } if(pai[i] == 'h' & mae[i] == 'h'){ u <- runif(1) if(u <= .25) filho[i] <- 'd' else if((u > .25) & (u <= .75)) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'h' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'h'){ u <- runif(1) if(u <= .5) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'r' & mae[i] == 'r') filho[i] <- 'r' } return(filho) # retorna a constituição genética do filho do cruzamento } # _____________________________________________________________________ #_ OK #_ Função para fazer cruzamentos #_ Parâmetros: pai e mae = indvíduos, 'pai' e 'mãe' # prole = número de indivíduos na progênie #______________________________________________________________________ cruz<-function(pai, mae, prole){ # argumentos da função progenie <- matrix(NA, ncol = length(pai), nrow = prole) # cria matriz qualquer [prole,g] - armazena a prole for(i in 1:prole) { #'laço' - cria prole filhos do cruzamento progenie[i,] <- segregacao(pai, mae) } return(progenie) # retorna a prole do cruzamento }
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }

Fernando, Faltou apenas um pequeno exemplo de como inicia a simulação! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 21 de Março de 2011 8:43:36 Assunto: Re: [R-br] Res: Implementação em C Senhores, bom dia. A simulação que pretendo realizar implementei através das funções que estão listadas abaixo, a combinations é do pacote gtools, necessáriamente queria só melhorar o tempo de processamento do função dialelo, especificamente no for() que corre pela matriz de combinações. Fui rodando odas as etapas da função e detectei justamente nesse ponto o gargalo do calculo. att, Fernando H # _____________________________________________________________________ #_ OK #_ Função para cálculo do valor genotípico #_ Parâmetros: indv = indvíduo sob análise # gmd = grau médio de dominância #______________________________________________________________________ soma.vg <- function(indv, gmd){ # argumentos da função h <- gmd # atribui o desvio de dominância ao heterozigoto gen <- numeric() # cria um vetor qualquer - armazena os valores genotípicos for(i in 1:length(indv)){ # 'laço' - passa a regra p/ cada loco # se o loco for igual a 'r' (recessivo) valor genotípico recebe -1 # se o loco for igual a 'h' (heterozigoto) valor genotípico recebe gmd # se o loco for igual a 'd' (dominante) valor genotípico recebe 1 if(indv[i] == 'r') { gen[i] <- -1 } else { if(indv[i] == 'h') gen[i] <- h else gen[i] <- 1 } } return(sum(gen)) # retorna a soma dos valores genotípcos por loco } # _____________________________________________________________________ #_ OK #_ Função para regra da segregação #_ Parâmetros: pai e mãe = indvíduos sob análise (cruzando) #______________________________________________________________________ segregacao <- function(pai, mae) { # argumentos da função filho <- numeric() # cria um vetor qualquer - armazena os valores genotípicos do filho for(i in 1:length(pai)) { # 'laço' - passa a regra de segregação p/ cada loco # se ambos pais são homozigotos dominantes (d), filho é dominante (d) # se um pai é dominante e o outro é heterozigoto (h) filho pode ser 'h' ou 'd' 50% p/ cada # se ambos pais são heterozigoto segregação 1:2:1 'd', 'h', e 'r' # se um pai é dominante e o outro é recessivo filho é heterozigoto # se um pai é reccessivo e o outro é heterozigoto filho pode ser 'r' ou 'r' 50% p/ cada # se ambos pais são recessivos filho é recessivo if(pai[i] == 'd' & mae[i] == 'd') filho[i] <- 'd' if(pai[i] == 'd' & mae[i] == 'h' | pai[i] == 'h' & mae[i] == 'd'){ u <- runif(1) if(u <= .5) filho[i] <- 'd' else filho[i] <- 'h' } if(pai[i] == 'd' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'd'){ filho[i] <- 'h' } if(pai[i] == 'h' & mae[i] == 'h'){ u <- runif(1) if(u <= .25) filho[i] <- 'd' else if((u > .25) & (u <= .75)) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'h' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'h'){ u <- runif(1) if(u <= .5) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'r' & mae[i] == 'r') filho[i] <- 'r' } return(filho) # retorna a constituição genética do filho do cruzamento } # _____________________________________________________________________ #_ OK #_ Função para fazer cruzamentos #_ Parâmetros: pai e mae = indvíduos, 'pai' e 'mãe' # prole = número de indivíduos na progênie #______________________________________________________________________ cruz<-function(pai, mae, prole){ # argumentos da função progenie <- matrix(NA, ncol = length(pai), nrow = prole) # cria matriz qualquer [prole,g] - armazena a prole for(i in 1:prole) { #'laço' - cria prole filhos do cruzamento progenie[i,] <- segregacao(pai, mae) } return(progenie) # retorna a prole do cruzamento }
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }

Fabio, A entrada da função dialelo é além dos outros argumentos explicados abaixo uma planilha de dados \textsf{data.frame} que contêm na primeira coluna identificação da família do indivíduo, na segunda coluna o pai (progenitor 1) do indivíduo, na terceira coluna a mãe do indivíduo (progenitor 2). Da quarta até a coluna \textsl{\texttt{g + 3}} são os valores genotípicos por loco do indivíduo, e nas últimas duas colunas tem-se o valor genotípico total e o valor fenotípico do indivído respectivamente. A função denominada \textsl{\texttt{dialelo}} e tem com argumentos: \textsl{\texttt{pais}} que é um vetor contendo a identificação dos indivíduos que serão os pais no dialelo. O argumento \textsl{\texttt{populacao}} indica de que população esses indivíduos serão obtidos (o data.frame descrito acima), \textsl{\texttt{prole}}, assim como na função \textsl{\texttt{cruz}} é um número inteiro que indica quantos individuos filhos serão gerados a partir de um dado cruzamento do dialelo. Os argumentos \textsl{\texttt{h2}}, é um valor entre zero e um, que dimensiona um ruido proposital e \textsl{\texttt{gmd}}, pode assumir qualquer valor, mas o que será utilizado é 0 ou 1, que simula diferentes interações alélicas! abraço, Fernando H 2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>
Fernando,
Faltou apenas um pequeno exemplo de como inicia a simulação!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
------------------------------ *De:* Fernando Henrique Toledo <fernandohtoledo@gmail.com> *Para:* r-br@listas.c3sl.ufpr.br *Enviadas:* Segunda-feira, 21 de Março de 2011 8:43:36 *Assunto:* Re: [R-br] Res: Implementação em C
Senhores, bom dia.
A simulação que pretendo realizar implementei através das funções que estão listadas abaixo, a combinations é do pacote gtools, necessáriamente queria só melhorar o tempo de processamento do função dialelo, especificamente no for() que corre pela matriz de combinações. Fui rodando odas as etapas da função e detectei justamente nesse ponto o gargalo do calculo.
att, Fernando H
# _____________________________________________________________________ #_ OK #_ Função para cálculo do valor genotípico #_ Parâmetros: indv = indvíduo sob análise # gmd = grau médio de dominância #______________________________________________________________________
soma.vg <- function(indv, gmd){ # argumentos da função h <- gmd # atribui o desvio de dominância ao heterozigoto gen <- numeric() # cria um vetor qualquer - armazena os valores genotípicos for(i in 1:length(indv)){ # 'laço' - passa a regra p/ cada loco # se o loco for igual a 'r' (recessivo) valor genotípico recebe -1 # se o loco for igual a 'h' (heterozigoto) valor genotípico recebe gmd # se o loco for igual a 'd' (dominante) valor genotípico recebe 1 if(indv[i] == 'r') { gen[i] <- -1 } else { if(indv[i] == 'h') gen[i] <- h else gen[i] <- 1 } } return(sum(gen)) # retorna a soma dos valores genotípcos por loco }
# _____________________________________________________________________ #_ OK #_ Função para regra da segregação #_ Parâmetros: pai e mãe = indvíduos sob análise (cruzando) #______________________________________________________________________
segregacao <- function(pai, mae) { # argumentos da função filho <- numeric() # cria um vetor qualquer - armazena os valores genotípicos do filho for(i in 1:length(pai)) { # 'laço' - passa a regra de segregação p/ cada loco # se ambos pais são homozigotos dominantes (d), filho é dominante (d) # se um pai é dominante e o outro é heterozigoto (h) filho pode ser 'h' ou 'd' 50% p/ cada # se ambos pais são heterozigoto segregação 1:2:1 'd', 'h', e 'r' # se um pai é dominante e o outro é recessivo filho é heterozigoto # se um pai é reccessivo e o outro é heterozigoto filho pode ser 'r' ou 'r' 50% p/ cada # se ambos pais são recessivos filho é recessivo if(pai[i] == 'd' & mae[i] == 'd') filho[i] <- 'd' if(pai[i] == 'd' & mae[i] == 'h' | pai[i] == 'h' & mae[i] == 'd'){ u <- runif(1) if(u <= .5) filho[i] <- 'd' else filho[i] <- 'h' } if(pai[i] == 'd' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'd'){ filho[i] <- 'h' } if(pai[i] == 'h' & mae[i] == 'h'){ u <- runif(1) if(u <= .25) filho[i] <- 'd' else if((u > .25) & (u <= .75)) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'h' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'h'){ u <- runif(1) if(u <= .5) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'r' & mae[i] == 'r') filho[i] <- 'r' } return(filho) # retorna a constituição genética do filho do cruzamento }
# _____________________________________________________________________ #_ OK #_ Função para fazer cruzamentos #_ Parâmetros: pai e mae = indvíduos, 'pai' e 'mãe' # prole = número de indivíduos na progênie #______________________________________________________________________
cruz<-function(pai, mae, prole){ # argumentos da função progenie <- matrix(NA, ncol = length(pai), nrow = prole) # cria matriz qualquer [prole,g] - armazena a prole for(i in 1:prole) { #'laço' - cria prole filhos do cruzamento progenie[i,] <- segregacao(pai, mae) } return(progenie) # retorna a prole do cruzamento }
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Na verdade, o que eu preciso é que vc coloque esse data.frame para nós ajudarmos! Coloque o negócio em "ponto de bala" e faremos apenas a otimização! Sem isso fica difícil otimizar! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 21 de Março de 2011 15:19:54 Assunto: Re: [R-br] Res: Res: Implementação em C Fabio, A entrada da função dialelo é além dos outros argumentos explicados abaixo uma planilha de dados \textsf{data.frame} que contêm na primeira coluna identificação da família do indivíduo, na segunda coluna o pai (progenitor 1) do indivíduo, na terceira coluna a mãe do indivíduo (progenitor 2). Da quarta até a coluna \textsl{\texttt{g + 3}} são os valores genotípicos por loco do indivíduo, e nas últimas duas colunas tem-se o valor genotípico total e o valor fenotípico do indivído respectivamente. A função denominada \textsl{\texttt{dialelo}} e tem com argumentos: \textsl{\texttt{pais}} que é um vetor contendo a identificação dos indivíduos que serão os pais no dialelo. O argumento \textsl{\texttt{populacao}} indica de que população esses indivíduos serão obtidos (o data.frame descrito acima), \textsl{\texttt{prole}}, assim como na função \textsl{\texttt{cruz}} é um número inteiro que indica quantos individuos filhos serão gerados a partir de um dado cruzamento do dialelo. Os argumentos \textsl{\texttt{h2}}, é um valor entre zero e um, que dimensiona um ruido proposital e \textsl{\texttt{gmd}}, pode assumir qualquer valor, mas o que será utilizado é 0 ou 1, que simula diferentes interações alélicas! abraço, Fernando H 2011/3/21 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br> Fernando,
Faltou apenas um pequeno exemplo de como inicia a simulação!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
________________________________
De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 21 de Março de 2011 8:43:36 Assunto: Re: [R-br] Res: Implementação em C
Senhores, bom dia.
A simulação que pretendo realizar implementei através das funções que estão listadas abaixo, a combinations é do pacote gtools, necessáriamente queria só melhorar o tempo de processamento do função dialelo, especificamente no for() que corre pela matriz de combinações. Fui rodando odas as etapas da função e detectei justamente nesse ponto o gargalo do calculo.
att, Fernando H
# _____________________________________________________________________ #_ OK #_ Função para cálculo do valor genotípico #_ Parâmetros: indv = indvíduo sob análise # gmd = grau médio de dominância #______________________________________________________________________
soma.vg <- function(indv, gmd){ # argumentos da função h <- gmd # atribui o desvio de dominância ao heterozigoto gen <- numeric() # cria um vetor qualquer - armazena os valores genotípicos for(i in 1:length(indv)){ # 'laço' - passa a regra p/ cada loco # se o loco for igual a 'r' (recessivo) valor genotípico recebe -1 # se o loco for igual a 'h' (heterozigoto) valor genotípico recebe gmd # se o loco for igual a 'd' (dominante) valor genotípico recebe 1 if(indv[i] == 'r') { gen[i] <- -1 } else { if(indv[i] == 'h') gen[i] <- h else gen[i] <- 1 } } return(sum(gen)) # retorna a soma dos valores genotípcos por loco }
# _____________________________________________________________________ #_ OK #_ Função para regra da segregação #_ Parâmetros: pai e mãe = indvíduos sob análise (cruzando) #______________________________________________________________________
segregacao <- function(pai, mae) { # argumentos da função filho <- numeric() # cria um vetor qualquer - armazena os valores genotípicos do filho for(i in 1:length(pai)) { # 'laço' - passa a regra de segregação p/ cada loco # se ambos pais são homozigotos dominantes (d), filho é dominante (d) # se um pai é dominante e o outro é heterozigoto (h) filho pode ser 'h' ou 'd' 50% p/ cada # se ambos pais são heterozigoto segregação 1:2:1 'd', 'h', e 'r' # se um pai é dominante e o outro é recessivo filho é heterozigoto # se um pai é reccessivo e o outro é heterozigoto filho pode ser 'r' ou 'r' 50% p/ cada # se ambos pais são recessivos filho é recessivo if(pai[i] == 'd' & mae[i] == 'd') filho[i] <- 'd' if(pai[i] == 'd' & mae[i] == 'h' | pai[i] == 'h' & mae[i] == 'd'){ u <- runif(1) if(u <= .5) filho[i] <- 'd' else filho[i] <- 'h' } if(pai[i] == 'd' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'd'){ filho[i] <- 'h' } if(pai[i] == 'h' & mae[i] == 'h'){ u <- runif(1) if(u <= .25) filho[i] <- 'd' else if((u > .25) & (u <= .75)) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'h' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'h'){ u <- runif(1) if(u <= .5) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'r' & mae[i] == 'r') filho[i] <- 'r' } return(filho) # retorna a constituição genética do filho do cruzamento }
# _____________________________________________________________________ #_ OK #_ Função para fazer cruzamentos #_ Parâmetros: pai e mae = indvíduos, 'pai' e 'mãe' # prole = número de indivíduos na progênie #______________________________________________________________________
cruz<-function(pai, mae, prole){ # argumentos da função progenie <- matrix(NA, ncol = length(pai), nrow = prole) # cria matriz qualquer [prole,g] - armazena a prole for(i in 1:prole) { #'laço' - cria prole filhos do cruzamento progenie[i,] <- segregacao(pai, mae) } return(progenie) # retorna a prole do cruzamento }
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Já vi o anexo! Vou ver se consigo otimizar! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Fernando Henrique Toledo <fernandohtoledo@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 21 de Março de 2011 8:43:36 Assunto: Re: [R-br] Res: Implementação em C Senhores, bom dia. A simulação que pretendo realizar implementei através das funções que estão listadas abaixo, a combinations é do pacote gtools, necessáriamente queria só melhorar o tempo de processamento do função dialelo, especificamente no for() que corre pela matriz de combinações. Fui rodando odas as etapas da função e detectei justamente nesse ponto o gargalo do calculo. att, Fernando H # _____________________________________________________________________ #_ OK #_ Função para cálculo do valor genotípico #_ Parâmetros: indv = indvíduo sob análise # gmd = grau médio de dominância #______________________________________________________________________ soma.vg <- function(indv, gmd){ # argumentos da função h <- gmd # atribui o desvio de dominância ao heterozigoto gen <- numeric() # cria um vetor qualquer - armazena os valores genotípicos for(i in 1:length(indv)){ # 'laço' - passa a regra p/ cada loco # se o loco for igual a 'r' (recessivo) valor genotípico recebe -1 # se o loco for igual a 'h' (heterozigoto) valor genotípico recebe gmd # se o loco for igual a 'd' (dominante) valor genotípico recebe 1 if(indv[i] == 'r') { gen[i] <- -1 } else { if(indv[i] == 'h') gen[i] <- h else gen[i] <- 1 } } return(sum(gen)) # retorna a soma dos valores genotípcos por loco } # _____________________________________________________________________ #_ OK #_ Função para regra da segregação #_ Parâmetros: pai e mãe = indvíduos sob análise (cruzando) #______________________________________________________________________ segregacao <- function(pai, mae) { # argumentos da função filho <- numeric() # cria um vetor qualquer - armazena os valores genotípicos do filho for(i in 1:length(pai)) { # 'laço' - passa a regra de segregação p/ cada loco # se ambos pais são homozigotos dominantes (d), filho é dominante (d) # se um pai é dominante e o outro é heterozigoto (h) filho pode ser 'h' ou 'd' 50% p/ cada # se ambos pais são heterozigoto segregação 1:2:1 'd', 'h', e 'r' # se um pai é dominante e o outro é recessivo filho é heterozigoto # se um pai é reccessivo e o outro é heterozigoto filho pode ser 'r' ou 'r' 50% p/ cada # se ambos pais são recessivos filho é recessivo if(pai[i] == 'd' & mae[i] == 'd') filho[i] <- 'd' if(pai[i] == 'd' & mae[i] == 'h' | pai[i] == 'h' & mae[i] == 'd'){ u <- runif(1) if(u <= .5) filho[i] <- 'd' else filho[i] <- 'h' } if(pai[i] == 'd' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'd'){ filho[i] <- 'h' } if(pai[i] == 'h' & mae[i] == 'h'){ u <- runif(1) if(u <= .25) filho[i] <- 'd' else if((u > .25) & (u <= .75)) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'h' & mae[i] == 'r' | pai[i] == 'r' & mae[i] == 'h'){ u <- runif(1) if(u <= .5) filho[i] <- 'h' else filho[i] <- 'r' } if(pai[i] == 'r' & mae[i] == 'r') filho[i] <- 'r' } return(filho) # retorna a constituição genética do filho do cruzamento } # _____________________________________________________________________ #_ OK #_ Função para fazer cruzamentos #_ Parâmetros: pai e mae = indvíduos, 'pai' e 'mãe' # prole = número de indivíduos na progênie #______________________________________________________________________ cruz<-function(pai, mae, prole){ # argumentos da função progenie <- matrix(NA, ncol = length(pai), nrow = prole) # cria matriz qualquer [prole,g] - armazena a prole for(i in 1:prole) { #'laço' - cria prole filhos do cruzamento progenie[i,] <- segregacao(pai, mae) } return(progenie) # retorna a prole do cruzamento }
# _____________________________________________________________________ # #_ Função para fazer um dialelo #_ Parâmetros: pais = indivíduos selecionados na população anterior # população = população dos pais # prole = tamanho das progênies # h2 = herdabilidade do caráter # gmd = grau médio de dominância #______________________________________________________________________ dialelo <- function(pais, populacao, prole, h2, gmd) { # argumentos da função combinacoes <- combinations(length(pais), 2, v = pais) # cria todas as combinações híbridas progenies <- vector('list', length = nrow(combinacoes)) # cria a estrutura das progênies id <- cbind(rep(c(1:nrow(combinacoes)), each = prole), rep(combinacoes[,1], each = prole), rep(combinacoes[,2], each = prole)) # cria a estrutura de identificação das progênies g <- ncol(populacao) - 5 # verifica o número de genes envolvidos for(i in 1:nrow(combinacoes)) { # 'laço' - para executar todos cruzamentos cruz.i <- cruz(populacao[combinacoes[i,1],4:(3 + g)], populacao[combinacoes[i,2],4:(3 + g)],prole) # aplica a função 'cruz' progenies[[i]] <- cruz.i # armazena a prole de cada cruzamento } dialelo <- as.data.frame(do.call(rbind, progenies)) # monta a planilha com o dialelo vg <- apply(dialelo, 1, soma.vg, gmd = gmd) # calcula os valores genotípicos totais por indivíduo varg <- var(vg) # calcula a variância genética fen <- vg + rnorm(nrow(dialelo), mean = 0, sqrt(varg * (1 - h2) / h2)) # atribui o desvio fenotípico resp <- cbind(id, dialelo, vg, fen) # monta a planilha com os resultados do dialelo names(resp) <- c('fami', 'pai', 'mae', 1:g, 'vg', 'fen') # atribui os nomes as colunas da planilha return(resp) # retorna o dialelo }

Carto Fernando, O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply! Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente! Em anexo estão os arquivos que utilizei como teste. Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!! No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando: R CMD SHLIB segregacao.c R CMD BATCH exemplo.R # Para rodar em Batch Ou rode no seu editor R favorito! Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155

Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)... http://www.murdoch-sutherland.com/Rtools/ b 2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Caros Fábio e Benilton, Fico muito grato pela ajuda de vocês, vou estudar bem os códigos que vocês me propuseram e com certeza irei aprender muito. A ajuda de vocês não só está servindo nesse caso, mas também como um todo em matéria de programação. Podem ficar tranquilo, que o que uso para rodar o R é o emacs 23 com o ESS no debian Squezee! Muito obrigado mesmo... abraços, Fernando H 2011/3/22 Benilton Carvalho <beniltoncarvalho@gmail.com>
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações. Gustavo Engenharia Florestal UFV ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)... http://www.murdoch-sutherland.com/Rtools/ b 2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

E qual e' o problema q vc ta' tendo? 2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Como compilar o codigo C para gerar a dll. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C E qual e' o problema q vc ta' tendo? 2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

R CMD SHLIB é a sintexe em linux para gerar o .so (equivalente da dll neste S.O.) No windows deve ter algo semelhante com Rcmd ... O manual "Writing R extension" detalha o procedimento. Se for usar recursos deste tipo no windows éaconselhavel instalar o Rtools mencionado aqui em uma mensagem anterior http://www.murdoch-sutherland.com/Rtools/installer.html On Sun, 27 Mar 2011, Gustavo Marcatti wrote:
Como compilar o codigo C para gerar a dll. Gustavo
____________________________________________________________________________________________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente): Rcmd SHLIB arquivo.c (mas, para Windows, deixo que alguem que use o tal responder com certeza) b 2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Vc pode tb compilar o dll no linux. R CMD SHLIB jaba.c -o jaba.dll Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente): Rcmd SHLIB arquivo.c (mas, para Windows, deixo que alguem que use o tal responder com certeza) b 2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Vc pode tb compilar o dll no linux.
R CMD SHLIB jaba.c -o jaba.dll
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente):
Rcmd SHLIB arquivo.c
(mas, para Windows, deixo que alguem que use o tal responder com certeza)
b
2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Alguem do grupo já utilizou codigo compilado fazendo tudo em windows. Não faço a minima ideia de onde realizar tal tarefa, especificamente gerar a dll. Em linux parece ser bem facil, mas no momento não posso migrar, bem que gostaria. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 28 de Março de 2011 9:41:19 Assunto: Re: [R-br] Res: Res: Res: Res: Implementação em C jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Vc pode tb compilar o dll no linux.
R CMD SHLIB jaba.c -o jaba.dll
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente):
Rcmd SHLIB arquivo.c
(mas, para Windows, deixo que alguem que use o tal responder com certeza)
b
2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Vc instalou o Rtools? Se sim, basta abrir uma janela do DOS e proceder como recomendados. Adicionalmente, a leitura do manual "writing R extensions" é mais q recomendada. benilton On 30 Mar 2011 12:41, "Gustavo Marcatti" <vgp.gustavo@yahoo.com.br> wrote: Alguem do grupo já utilizou codigo compilado fazendo tudo em windows. Não faço a minima ideia de onde realizar tal tarefa, especificamente gerar a dll. Em linux parece ser bem facil, mas no momento não posso migrar, bem que gostaria. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@lista... Enviadas: Segunda-feira, 28 de Março de 2011 9:41:19 *Assunto:* Re: [R-br] Res: Res: Res: Res: Implementação em C jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias C... _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Além das recomendações do Benilton. Particione o seu HD e instale o linux (versão preferida) e comece a aprender!!! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 8:41:09 Assunto: [R-br] Res: Res: Res: Res: Res: Implementação em C Alguem do grupo já utilizou codigo compilado fazendo tudo em windows. Não faço a minima ideia de onde realizar tal tarefa, especificamente gerar a dll. Em linux parece ser bem facil, mas no momento não posso migrar, bem que gostaria. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 28 de Março de 2011 9:41:19 Assunto: Re: [R-br] Res: Res: Res: Res: Implementação em C jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Vc pode tb compilar o dll no linux.
R CMD SHLIB jaba.c -o jaba.dll
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente):
Rcmd SHLIB arquivo.c
(mas, para Windows, deixo que alguem que use o tal responder com certeza)
b
2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Obrigado pelas respostas. Mas ainda não cosengui compilar o codigo, o DOS envia uma mensagem que não reconhece o R. Deve ter alguma configuração a ser feita ainda. Gostei da sua sugestão Fabio. So algumas dúvidas: Quanto de memoria no HD vc recomendaria reservar para o Linux? Existe alguma diferença de desempenho de Linux + Windows com Linux somente? (Considerando que esteja usando Linux na configuração Linux + Windows). Valeu Gustavo Marcatti Eng Florestal-UFV ________________________________ De: Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 11:18:20 Assunto: [R-br] Res: Res: Res: Res: Res: Res: Implementação em C Além das recomendações do Benilton. Particione o seu HD e instale o linux (versão preferida) e comece a aprender!!! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 8:41:09 Assunto: [R-br] Res: Res: Res: Res: Res: Implementação em C Alguem do grupo já utilizou codigo compilado fazendo tudo em windows. Não faço a minima ideia de onde realizar tal tarefa, especificamente gerar a dll. Em linux parece ser bem facil, mas no momento não posso migrar, bem que gostaria. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 28 de Março de 2011 9:41:19 Assunto: Re: [R-br] Res: Res: Res: Res: Implementação em C jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Vc pode tb compilar o dll no linux.
R CMD SHLIB jaba.c -o jaba.dll
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente):
Rcmd SHLIB arquivo.c
(mas, para Windows, deixo que alguem que use o tal responder com certeza)
b
2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

O comando no Windows, como dito anteiormente, e' Rcmd (ao contrario do *NIX, que eh R CMD)... Se isso retorna como comando nao encontrado (ou o q quer que seja que o Windows diga), e' pq voce nao seguiu todas as instrucoes de instalacao do Rtools e, muito provavelmente, voce nao tem a variavel PATH configurada apropriadamente. b

Gustavo, Para treino, vc pode reservar uns 10 Gb de HD para instalar o linux e utilizar o R + código compilado! quanto ao desempenho Linux + W, não há problemas! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quinta-feira, 31 de Março de 2011 9:17:03 Assunto: [R-br] Res: Res: Res: Res: Res: Res: Res: Implementação em C Obrigado pelas respostas. Mas ainda não cosengui compilar o codigo, o DOS envia uma mensagem que não reconhece o R. Deve ter alguma configuração a ser feita ainda. Gostei da sua sugestão Fabio. So algumas dúvidas: Quanto de memoria no HD vc recomendaria reservar para o Linux? Existe alguma diferença de desempenho de Linux + Windows com Linux somente? (Considerando que esteja usando Linux na configuração Linux + Windows). Valeu Gustavo Marcatti Eng Florestal-UFV ________________________________ De: Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 11:18:20 Assunto: [R-br] Res: Res: Res: Res: Res: Res: Implementação em C Além das recomendações do Benilton. Particione o seu HD e instale o linux (versão preferida) e comece a aprender!!! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 8:41:09 Assunto: [R-br] Res: Res: Res: Res: Res: Implementação em C Alguem do grupo já utilizou codigo compilado fazendo tudo em windows. Não faço a minima ideia de onde realizar tal tarefa, especificamente gerar a dll. Em linux parece ser bem facil, mas no momento não posso migrar, bem que gostaria. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 28 de Março de 2011 9:41:19 Assunto: Re: [R-br] Res: Res: Res: Res: Implementação em C jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Vc pode tb compilar o dll no linux.
R CMD SHLIB jaba.c -o jaba.dll
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente):
Rcmd SHLIB arquivo.c
(mas, para Windows, deixo que alguem que use o tal responder com certeza)
b
2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Benilton e Fabio, obrigado pela ajuda. Irei instalar o Linux assim que puder. Gustavo ________________________________ De: Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quinta-feira, 31 de Março de 2011 10:22:15 Assunto: [R-br] Res: Res: Implementação em C Gustavo, Para treino, vc pode reservar uns 10 Gb de HD para instalar o linux e utilizar o R + código compilado! quanto ao desempenho Linux + W, não há problemas! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quinta-feira, 31 de Março de 2011 9:17:03 Assunto: [R-br] Res: Res: Res: Res: Res: Res: Res: Implementação em C Obrigado pelas respostas. Mas ainda não cosengui compilar o codigo, o DOS envia uma mensagem que não reconhece o R. Deve ter alguma configuração a ser feita ainda. Gostei da sua sugestão Fabio. So algumas dúvidas: Quanto de memoria no HD vc recomendaria reservar para o Linux? Existe alguma diferença de desempenho de Linux + Windows com Linux somente? (Considerando que esteja usando Linux na configuração Linux + Windows). Valeu Gustavo Marcatti Eng Florestal-UFV ________________________________ De: Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 11:18:20 Assunto: [R-br] Res: Res: Res: Res: Res: Res: Implementação em C Além das recomendações do Benilton. Particione o seu HD e instale o linux (versão preferida) e comece a aprender!!! Valeu!!! Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz Tel.: 73-3680-5076 Cel.: 73-9991-8155 ________________________________ De: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 30 de Março de 2011 8:41:09 Assunto: [R-br] Res: Res: Res: Res: Res: Implementação em C Alguem do grupo já utilizou codigo compilado fazendo tudo em windows. Não faço a minima ideia de onde realizar tal tarefa, especificamente gerar a dll. Em linux parece ser bem facil, mas no momento não posso migrar, bem que gostaria. Gustavo ________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Segunda-feira, 28 de Março de 2011 9:41:19 Assunto: Re: [R-br] Res: Res: Res: Res: Implementação em C jaba.dll, nesse caso, continuara sendo um arquivo binario para linux.... 2011/3/28 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Vc pode tb compilar o dll no linux.
R CMD SHLIB jaba.c -o jaba.dll
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
----- Mensagem original ---- De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Cc: r-br@listas.c3sl.ufpr.br Enviadas: Domingo, 27 de Março de 2011 21:03:20 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
No Windows, assumindo que RTools esteja instalado, vc deveria conseguir executar (na linha de comando do DOS ou o que quer que seja o nome atualmente):
Rcmd SHLIB arquivo.c
(mas, para Windows, deixo que alguem que use o tal responder com certeza)
b
2011/3/28 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Como compilar o codigo C para gerar a dll.
Gustavo
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Cc: Gustavo Marcatti <vgp.gustavo@yahoo.com.br> Enviadas: Quinta-feira, 24 de Março de 2011 8:08:49 Assunto: Re: [R-br] Res: Res: Res: Implementação em C
E qual e' o problema q vc ta' tendo?
2011/3/24 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>:
Pessoal, alguem do grupo tem experiencia em implementações em C para Windows? Se alguem tiver algumas dicas será de grande utilidade. Obs: já instalei o RTools de acordo com as recomendações.
Gustavo Engenharia Florestal UFV
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 22 de Março de 2011 12:25:14 Assunto: Re: [R-br] Res: Res: Implementação em C
Se estiver sob Windows, e' suficiente instalar o RTools... e substituir R CMD por Rcmd (acho que e' isso, nao tenho como testar)...
http://www.murdoch-sutherland.com/Rtools/
b
2011/3/22 Fabio Mathias Corrêa <fabio.ufla@yahoo.com.br>:
Carto Fernando,
O seu problema não estava no for, mas sim nos if's e else's que vc tem na função segregação! O for foi substituído por um apply!
Creio que seu problema foi resolvido! O que levava quase 5 seg. por iteração agora faz em 0.032 seg aproximadamente!
Em anexo estão os arquivos que utilizei como teste.
Espero que vc utilize o linux, pois se vc dá dinheiro do Bill Gates, não conseguirá rodar o programa! Ele não ajuda quem dá dinheiro a ele!!!
No diretório onde se encontra o arquivo segregacao.c e exemplo.R vc deve dar a seguinte linha de comando:
R CMD SHLIB segregacao.c
R CMD BATCH exemplo.R # Para rodar em Batch
Ou rode no seu editor R favorito!
Dá para otimizar mais, o seu código, porém exige muuuiiittooo mais tempo!
Valeu!!!
Fábio Mathias Corrêa Departamento de Estatística Universidade Estadual de Santa Cruz
Tel.: 73-3680-5076 Cel.: 73-9991-8155
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
participantes (7)
-
Benilton Carvalho
-
eder@leg.ufpr.br
-
Fabio Mathias Corrêa
-
Fernando Henrique Toledo
-
Gustavo Marcatti
-
Paulo Justiniano
-
Pedro Henrique