[R-br] Dúvida em looping e data.frame

Éder Comunello comunello.eder em gmail.com
Quarta Janeiro 27 11:57:57 BRST 2016


Paulo, bom dia!

A instrução for (i in 1:500) não parece coerente, pois me parece que você
deveria variar em função da iteração n x p. Ao variar n você irá criar
vetores de tamanhos diferentes, impossibilitando o armazenamento direto em
um data.frame(). Poderia utilizar uma lista.

Você pode tentar algo como:
simulacao <- function(proporcao, moedas){for (n in c(10, 20, 30)) for (p in
c(0.3, 0.4, 0.5)) print(moedas(n,p))}
simulacao(proporcao, moedas)

Outro ponto é que você poderia usar rbinom() para os sorteios, enxugando
seu código. Deixo uma ideia abaixo:

### <code r>
args(rbinom) ### function (n, size, prob)
vetor_moedas <- rbinom(100, 1, .4); vetor_moedas
sum(vetor_moedas)/length(vetor_moedas) ### proporção final

for (n in c(10, 20, 30)) for (p in c(0.3, 0.4, 0.5)) print(rbinom(n, 1,p))
#  [1] 0 1 1 0 0 0 0 0 0 0
#  [1] 0 0 0 0 0 0 1 0 0 1
#  [1] 0 1 1 0 0 0 0 1 0 1
#  [1] 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
#  [1] 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0
#  [1] 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1
#  [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
#  [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
#  [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
### </code>


​
================================================
Éder Comunello
PhD Student in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil [22 16.5'S, 54 49.0'W]




Em 27 de janeiro de 2016 03:33, Paulo Henrique Pimenta <
paulopimenta6 em hotmail.com> escreveu:

> Olá a todos
>
> 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:
>
> ####Laboratorio 1 de R
>
> ###cara eh 1
> ###coroa eh 0
> vetor_moedas <- NULL
> vetor <- NULL
> a <- NULL
>
> moeda <- function(p){
>
> if(runif(1) < p){
>
>                  y <- 1
>
>                  }else{
>
>                        y <- 0
>
>                       }
>                                 return(y)
>
>                                 }
>
> ####separando uma funcao da outra####
>
> moedas <- function(numeros,probabilidade){
>
>                                                for (i in 1:numeros){
>
>                                                vetor[i] <-
> moeda(probabilidade)
>
>                                                                         }
>
>                                                return(vetor)
>
>                                                }
>
>
> ####separando uma funcao da outra####
>
> proporcao <- function(moedas){
>
>                            numeros_1 <- sum(vetor_moedas)
>
>                            numeros_totais <- length(vetor_moedas)
>
>                            proporcao_final <- numeros_1/numeros_totais
>
>                            return(proporcao_final)
>
>                           }
>
> ####separando uma funcao da outra####
>
> simulacao <- function(proporcao, moedas){
>
> ###variando o "n" e o "p"
>
> for (i in 1:500){
>
> \\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...
>
>   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]))
>
> \\ 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!
>
>                }
>
>
> return(a)
>
>                                        }
>
> ##############################
> ##############################
> ###Probabilidade de ser cara ou 1 eh 0.5 - funcao moeda
> ###lancamento de 10 moedas - funcao moedas
>
> ###comeco das chamas
>
> #########################################
> prob <- 0.4
>
> moeda(prob)
>
> #########################################
> n_1 <- 100
>
> moedas(n_1, prob)
>
> #########################################
>
> vetor_moedas <- moedas(n_1, prob)
>
> #########################################
>
> proporcao(vetor_moedas)
>
> #########################################
>
> simulacao(proporcao,moedas)
>
> ###
> ###
> ##############################
>
>
> Um grande abraço a todos!!
>
> Paulo Henrique de A. S. Pimenta.
>
> Graduando em Meteorologia (Bacharelado) - IAG/USP.
> Fone: +5511981318435.
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160127/515a392f/attachment.html>


Mais detalhes sobre a lista de discussão R-br