O que eu preciso fazer é exatamente o que o Eduardo fez, com uma modificação:
O $p$, ao invés de ser um número gerado aleatoriamente, é o resultado de uma função logit.
Obviamente, o resultado de uma logit é um número entre 0 e 1, então a solução do Eduardo é muito próxima do que eu preciso. Mas quando eu substituo o "runif(1)" pela minha função
logística, os resultados deixam se ser entre 1 e 5.
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?
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
[]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)
}