<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><div><span style="font-size: 12pt;">Usei a função </span></div><div><div dir="ltr"><div><br></div><div><div>simulacao <- function(proporcao, moedas){</div><div> </div><div> for (n in c(10, 20, 30)) </div><div> </div><div> for (p in c(0.3, 0.4, 0.5)) </div><div> </div><div> a <- print(moedas(n,p))</div><div> return(a)</div><div> }</div><div><br></div><div>b <- simulacao(proporcao, moedas)</div><div><br></div><div>No final ele possui somente um vetor com os dados gerados com n = 30 e p = 0.5 e não todos os gerados pelas combinações. Como eu poderia ter uma vetor ou alguma outra forma de armazenar estes dados? </div><br>Paulo Henrique de A. S. Pimenta.<div><br></div><div>Graduando em Meteorologia (Bacharelado) - IAG/USP.<br>Fone: +5511981318435.</div><br><div>> <br>> Message: 11<br>> Date: Wed, 27 Jan 2016 09:33:10 +0300<br>> From: Paulo Henrique Pimenta <paulopimenta6@hotmail.com><br>> To: "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br><br>> Subject: [R-br] Dúvida em looping e data.frame<br>> Message-ID: <BAY182-W241C2B8A79DFC8287003AFF4D90@phx.gbl><br>> Content-Type: text/plain; charset="iso-8859-1"<br>> <br>> Olá a todos<br>> Estou escrevendo um código que calcula o lance de uma moeda jogada e a probabilidade dela acontecer em respostas de 1 para cara e 0 para coroa, num bloco do meu código fiquei com uma dúvida relacionada a vetorização. Abaixo passarei todo o código e irei destacar o que me traz a dúvida:<br>> <br>> ####Laboratorio 1 de R<br>> ###cara eh 1###coroa eh 0vetor_moedas <- NULLvetor <- NULLa <- NULL<br>> moeda <- function(p){<br>> if(runif(1) < p){<br>> y <- 1 <br>> }else{<br>> y <- 0 } return(y) } ####separando uma funcao da outra####<br>> moedas <- function(numeros,probabilidade){<br>> for (i in 1:numeros){<br>> vetor[i] <- moeda(probabilidade)<br>> }<br>> return(vetor)<br>> } <br>> <br>> ####separando uma funcao da outra####<br>> proporcao <- function(moedas){<br>> numeros_1 <- sum(vetor_moedas)<br>> numeros_totais <- length(vetor_moedas) <br>> proporcao_final <- numeros_1/numeros_totais<br>> return(proporcao_final)<br>> }<br>> ####separando uma funcao da outra####<br>> simulacao <- function(proporcao, moedas){<br>> ###variando o "n" e o "p"<br>> for (i in 1:500){<br>> \\Aqui começa a minha, pois como fazer com que o vetor a1 aloque como data.frame todos os dados feitos pela função moedas, como fazer com que a2 também aloque um outro data.frame que aloque informações da função moedas e assim por diante... <br>> n <- c(10, 20, 30, 40, 50) p <- c(0.2, 0.3, 0.4, 0.5) a[i] <- data.frame(moedas(n[i],p[i])) <br>> \\ As vezes ele só aloca o que é produzido em moedas(n[1],p[1]) em a1 e recicla o restante. Se alguém quiser testar fiquem a vontade para ajudar!<br>> }<br>> <br>> return(a)<br>> }<br>> ###############################################################Probabilidade de ser cara ou 1 eh 0.5 - funcao moeda###lancamento de 10 moedas - funcao moedas<br>> ###comeco das chamas<br>> #########################################prob <- 0.4<br>> moeda(prob)<br>> #########################################n_1 <- 100<br>> moedas(n_1, prob)<br>> #########################################<br>> vetor_moedas <- moedas(n_1, prob)<br>> #########################################<br>> proporcao(vetor_moedas)<br>> #########################################<br>> simulacao(proporcao,moedas)<br>> #################################### <br>> Um grande abraço a todos!!<br>> <br>> Paulo Henrique de A. S. Pimenta.<br>> Graduando em Meteorologia (Bacharelado) - IAG/USP.<br>> Fone: +5511981318435. <br>> -------------- Próxima Parte ----------<br>> Um anexo em HTML foi limpo...<br>> URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160127/683e3d06/attachment-0001.html><br>> <br>> ------------------------------<br>> <br>> Message: 12<br>> Date: Wed, 27 Jan 2016 10:57:57 -0300<br>> From: Éder Comunello <comunello.eder@gmail.com><br>> To: "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br><br>> Subject: Re: [R-br] Dúvida em looping e data.frame<br>> Message-ID:<br>> <CABmC8gmxHtjGenrn6us=VnsgRE2E1B_zCY_nBZ+Vnyp1CZX5nw@mail.gmail.com><br>> Content-Type: text/plain; charset="utf-8"<br>> <br>> Paulo, bom dia!<br>> <br>> A instrução for (i in 1:500) não parece coerente, pois me parece que você<br>> deveria variar em função da iteração n x p. Ao variar n você irá criar<br>> vetores de tamanhos diferentes, impossibilitando o armazenamento direto em<br>> um data.frame(). Poderia utilizar uma lista.<br>> <br>> Você pode tentar algo como:<br>> simulacao <- function(proporcao, moedas){for (n in c(10, 20, 30)) for (p in<br>> c(0.3, 0.4, 0.5)) print(moedas(n,p))}<br>> simulacao(proporcao, moedas)<br>> <br>> Outro ponto é que você poderia usar rbinom() para os sorteios, enxugando<br>> seu código. Deixo uma ideia abaixo:<br>> <br>> ### <code r><br>> args(rbinom) ### function (n, size, prob)<br>> vetor_moedas <- rbinom(100, 1, .4); vetor_moedas<br>> sum(vetor_moedas)/length(vetor_moedas) ### proporção final<br>> <br>> for (n in c(10, 20, 30)) for (p in c(0.3, 0.4, 0.5)) print(rbinom(n, 1,p))<br>> # [1] 0 1 1 0 0 0 0 0 0 0<br>> # [1] 0 0 0 0 0 0 1 0 0 1<br>> # [1] 0 1 1 0 0 0 0 1 0 1<br>> # [1] 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0<br>> # [1] 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0<br>> # [1] 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1<br>> # [1] 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0<br>> # [1] 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 0<br>> # [1] 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 0<br>> ### </code><br>> <br>> <br>> <br>> ================================================<br>> Éder Comunello<br>> PhD Student in Agricultural Systems Engineering (USP/Esalq)<br>> Brazilian Agricultural Research Corporation (Embrapa)<br>> Dourados, MS, Brazil [22 16.5'S, 54 49.0'W]<br>> <br>> <br>> <br>> <br>> Em 27 de janeiro de 2016 03:33, Paulo Henrique Pimenta <<br>> paulopimenta6@hotmail.com> escreveu:<br>> <br>> > Olá a todos<br>> ><br>> > Estou escrevendo um código que calcula o lance de uma moeda jogada e a<br>> > probabilidade dela acontecer em respostas de 1 para cara e 0 para coroa,<br>> > num bloco do meu código fiquei com uma dúvida relacionada a vetorização.<br>> > Abaixo passarei todo o código e irei destacar o que me traz a dúvida:<br>> ><br>> > ####Laboratorio 1 de R<br>> ><br>> > ###cara eh 1<br>> > ###coroa eh 0<br>> > vetor_moedas <- NULL<br>> > vetor <- NULL<br>> > a <- NULL<br>> ><br>> > moeda <- function(p){<br>> ><br>> > if(runif(1) < p){<br>> ><br>> > y <- 1<br>> ><br>> > }else{<br>> ><br>> > y <- 0<br>> ><br>> > }<br>> > return(y)<br>> ><br>> > }<br>> ><br>> > ####separando uma funcao da outra####<br>> ><br>> > moedas <- function(numeros,probabilidade){<br>> ><br>> > for (i in 1:numeros){<br>> ><br>> > vetor[i] <-<br>> > moeda(probabilidade)<br>> ><br>> > }<br>> ><br>> > return(vetor)<br>> ><br>> > }<br>> ><br>> ><br>> > ####separando uma funcao da outra####<br>> ><br>> > proporcao <- function(moedas){<br>> ><br>> > numeros_1 <- sum(vetor_moedas)<br>> ><br>> > numeros_totais <- length(vetor_moedas)<br>> ><br>> > proporcao_final <- numeros_1/numeros_totais<br>> ><br>> > return(proporcao_final)<br>> ><br>> > }<br>> ><br>> > ####separando uma funcao da outra####<br>> ><br>> > simulacao <- function(proporcao, moedas){<br>> ><br>> > ###variando o "n" e o "p"<br>> ><br>> > for (i in 1:500){<br>> ><br>> > \\Aqui começa a minha, pois como fazer com que o vetor a1 aloque como<br>> > data.frame todos os dados feitos pela função moedas, como fazer com que a2<br>> > também aloque um outro data.frame que aloque informações da função moedas e<br>> > assim por diante...<br>> ><br>> > n <- c(10, 20, 30, 40, 50)<br>> > p <- c(0.2, 0.3, 0.4, 0.5)<br>> ><br>> > a[i] <- data.frame(moedas(n[i],p[i]))<br>> ><br>> > \\ As vezes ele só aloca o que é produzido em moedas(n[1],p[1]) em a1 e<br>> > recicla o restante. Se alguém quiser testar fiquem a vontade para ajudar!<br>> ><br>> > }<br>> ><br>> ><br>> > return(a)<br>> ><br>> > }<br>> ><br>> > ##############################<br>> > ##############################<br>> > ###Probabilidade de ser cara ou 1 eh 0.5 - funcao moeda<br>> > ###lancamento de 10 moedas - funcao moedas<br>> ><br>> > ###comeco das chamas<br>> ><br>> > #########################################<br>> > prob <- 0.4<br>> ><br>> > moeda(prob)<br>> ><br>> > #########################################<br>> > n_1 <- 100<br>> ><br>> > moedas(n_1, prob)<br>> ><br>> > #########################################<br>> ><br>> > vetor_moedas <- moedas(n_1, prob)<br>> ><br>> > #########################################<br>> ><br>> > proporcao(vetor_moedas)<br>> ><br>> > #########################################<br>> ><br>> > simulacao(proporcao,moedas)<br>> ><br>> > ###<br>> > ###<br>> > ##############################<br>> ><br>> ><br>> > Um grande abraço a todos!!<br>> ><br>> > Paulo Henrique de A. S. Pimenta.<br>> ><br>> > Graduando em Meteorologia (Bacharelado) - IAG/USP.<br>> > Fone: +5511981318435.<br>> ><br>> > _______________________________________________<br>> > R-br mailing list<br>> > R-br@listas.c3sl.ufpr.br<br>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça<br>> > código mínimo reproduzível.<br>> ><br>> -------------- Próxima Parte ----------<br>> Um anexo em HTML foi limpo...<br>> URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160127/515a392f/attachment-0001.html><br>> <br>> ------------------------------<br>> <br>> Subject: Legenda do Digest<br>> <br>> _______________________________________________<br>> R-br mailing list<br>> R-br@listas.c3sl.ufpr.br<br>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> <br>> <br>> ------------------------------<br>> <br>> Fim da Digest R-br, volume 61, assunto 17<br>> *****************************************<br></div></div> </div></div><style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}
.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}
--></style> </div></body>
</html>