[R-br] Dúvida função no R

Fabio Mathias Corrêa fabio.ufla em yahoo.com.br
Sexta Setembro 14 11:43:29 BRT 2012


Felipe, 

Realmente, o if resolve o problema.

Só uma dica, troque o if por 

ifelse(length(temp)>0,resp=max(temp), resp=1)

Quanto ao which, vc precisa corrgir!

Valeu!

 
        Fábio Mathias Corrêa


   Universidade Estadual de Santa Cruz
Departamento de Ciências Exatas e da Terra - DCET


Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
CEP 45662-900. Ilhéus-Bahia


Tel.: 73-3680-5076


________________________________
 De: Felipe Buchbinder <felbuch em gmail.com>
Para: r-br em listas.c3sl.ufpr.br 
Enviadas: Sexta-feira, 14 de Setembro de 2012 0:12
Assunto: Re: [R-br] Dúvida função no R
 

Fábio,

Muito obrigado pela ajuda. Mas o if já não dá conta do caso em que p.vec não possui um elemento maior do que seed? E como p.vec é construido dentro de um loop que adiciona um elemento durante k iterações, como ele pode ter mais do que k elementos? Eu achava que já tinha controlado para evitar esses casos... não?

mais uma vez obrigado,

Felipe


2012/9/13 Fabio Mathias Corrêa <fabio.ufla em yahoo.com.br>

O problema está nesta parte aqui!
>
>
>Nem sempre o vetor  p.vec possui um elemento maior que o seed, e quando isto ocorre retorna interger(0)
>
>
>Outro problema é que o which pega a posição do elemento, então, quando vc pega o max(temp), se o vetor tem tamanho 20, por exemplo, ele vai retornar o 20 e não o elemento.
>
>
>Precisa corrigir ai!
>
>
> temp = which(p.vec>seed) #we use this temporary vector in order to avoid warnings should its length be zero
>print(temp)
>  if(length(temp)>0){resp=max(temp)}else{resp=1}
>
>
>Valeu! 
>
>
>        Fábio Mathias Corrêa
>
>
>   Universidade Estadual de Santa Cruz
>Departamento de Ciências Exatas e da Terra - DCET
>
>
>Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
>CEP 45662-900. Ilhéus-Bahia
>
>
>
>Tel.: 73-3680-5076
>
>
>________________________________
> De: Felipe Buchbinder <felbuch em gmail.com>
>Para: r-br em listas.c3sl.ufpr.br 
>Enviadas: Quinta-feira, 13 de Setembro de 2012 15:24
>Assunto: Re: [R-br] Dúvida função no R
> 
>
>
>Obrigado pela referência,
>
>
>Preparei um CMR que envio anexo.
>
>
>Mais uma vez, obrigado 
>Felipe
>
>
>2012/9/13 FHRB Toledo <fernandohtoledo em gmail.com>
>
>Felipe,
>>
>>Para CMR, consulte: https://gist.github.com/1088208
>>
>>
>>att,
>>FH
>>
>>
>>
>>2012/9/13 Felipe Buchbinder <felbuch em gmail.com>
>>
>>O k foi definido no início do código, fora da função, como k = 5.
>>>
>>>
>>>Desculpe a ignorância, mas o que é um CMR? Como eu posso fazer um para enviar à lista?
>>>
>>>
>>>Obrigado pela disposição,
>>>
>>>Felipe
>>>
>>>
>>>
>>>2012/9/13 Leonard de Assis <assis.leonard em gmail.com>
>>>
>>>Onde foi definido o k?
>>>>
>>>>[]s
Leonard de Assis
assis <dot> leonard <at> gmail <dot> com 
Em 13/09/2012 12:56, Felipe Buchbinder escreveu:
>>>>
>>>>Prezados professores, 
>>>>>
>>>>>
>>>>>Estou com um problema em uma função no R.
>>>>>A função é a seguinte:
>>>>>
>>>>>
>>>>>resp <- function(subject,item,trait)
>>>>>>>>{
>>>>>>>>  
>>>>>>>>  p.vec = NULL
>>>>>>>>  
>>>>>>>>  for(category in 1:k)  # k = 5
>>>>>>>>  {
>>>>>>>>    p = ogive ( theta[subject,trait] , a[item] ,
            b[item,category] , D )    # aqui é uma logit (D=1) ou probit
            (D=1.7)
>>>>>>>>    p.vec = c(p.vec,p)
>>>>>>>>  }
>>>>>>>>  
>>>>>>>>  #Generates a random number
>>>>>>>>  
>>>>>>>>  seed<-runif(1,0.2,0.8)
>>>>>>>>  
>>>>>>>>  #Selects an answer
>>>>>>>>  
>>>>>>>>  temp = which ( p.vec>seed ) 
>>>>>>>>  if( length (temp) > 0 ) { resp = max (temp) } else {
            resp = 1 }
>>>>>>>>  resp
>>>>>>>>}
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>Esta função está inserida em um loop e deveria me retornar um número inteiro entre 1 e 5.
>>>>>Da primeira vez, isto acontece.
>>>>>Mas a partir da segunda, ela começa a me retornar valores como 20, 16,...
>>>>>
>>>>>
>>>>>Alguma idéia de porque isso acontece???
>>>>>
>>>>>
>>>>>Desde já, obrigado!
>>>>>
>>>>>
>>>>>Felipe Buchbinder
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>_______________________________________________
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.
>>>>
>>>>_______________________________________________
>>>>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.
>>>>
>>>
>>>_______________________________________________
>>>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.
>>>
>>
>>_______________________________________________
>>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.
>>
>
>_______________________________________________
>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.
>
>
>_______________________________________________
>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.
>

_______________________________________________
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/20120914/d66a3904/attachment.html>


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