[R-br] for e If
Benilton Carvalho
beniltoncarvalho em gmail.com
Domingo Abril 27 23:14:03 BRT 2014
Exercicio entender pq isso funciona:
f1 = function(d1, d2) (100 + d1 ^ 2 - d2 ^ 2) / 20
f1(d1, d2) * ifelse(Sit<=2, 1, .5) + 10*(Sit==2) + 7.5*(Sit==3)
Em 26 de abril de 2014 19:50, Evelyn Alecrim <evelyn.alecrim em gmail.com>escreveu:
> Boa noite! Muito obrigada a todos! Testei todas as soluções e elas foram
> muito úteis. Realmente faltava a indexação.
>
>
> Em 25 de abril de 2014 17:05, Leandro Marino <
> leandromarino em leandromarino.com.br> escreveu:
>
>> ou seria isto?
>>
>> ifelse(Sit==1,(100 + d1 ^ 2 - d2 ^ 2) / 20,ifelse(Sit==2,(10 + (100 + d1
>> ^ 2 - d2 ^ 2) / 20),(400 + d1 ^ 2 - d2 ^ 2) / 40))
>>
>>
>> Em 25 de abril de 2014 16:51, Márcio Souza <souza.mlm em gmail.com>escreveu:
>>
>> Gente,
>>>
>>> Da maneira que está o script, k vai ser um vetor... não uma constante,
>>> como Emily quer, suponho.
>>> E outra: a cada volta do loop, k é substituído por um novo vetor...
>>>
>>> Emily: k é um vetor mesmo, como estou pensando?? Ou... k era pra ser uma
>>> constante? (dependendo da resposta, a solução se torna mais tranquila).
>>>
>>> Abs.
>>>
>>>
>>>
>>>
>>> Em 25 de abril de 2014 16:37, Luciano F. Sgarbi <
>>> luciano.f.sgarbi em gmail.com> escreveu:
>>>
>>> Seria isso?
>>>> for(i in Sit){
>>>> if(i==1){
>>>> k<-(100 + d1 ^ 2 - d2 ^ 2) / 20
>>>>
>>>> } else if(i==2){
>>>> k<-(10 + (100 + d1 ^ 2 - d2 ^ 2) / 20)
>>>> } else {
>>>> k<-(400 + d1 ^ 2 - d2 ^ 2) / 40
>>>> }
>>>> print(k)
>>>> }
>>>>
>>>>
>>>> Em 25 de abril de 2014 16:30, Evelyn Alecrim <alecryn em yahoo.com.br>escreveu:
>>>>
>>>>> Boa tarde,
>>>>>
>>>>> Tenho a seguinte situação, tenho três variáveis: Sit, d1 e d2.
>>>>> Gostaria que um valor (k) fosse calculado levando em consideração o valor
>>>>> de Sit, ou seja, para cada Sit uma fórmula diferente seria usada, como
>>>>> abaixo.
>>>>>
>>>>> Sit=c(3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>>>>> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
>>>>>
>>>>> d1=c(1.27, 5.80, 2.42, 3.11, 5.25, 4.74, 5.42, 5.14, 5.27,
>>>>> 5.61, 6.09, 6.38, 6.34, 8.60,
>>>>> 7.36, 9.96, 10.86, 11.35, 8.94, 9.19, 8.66, 8.98, 9.86,
>>>>> 9.94, 11.59, 15.61,
>>>>> 6.28, 7.83, 7.94, 7.67, 8.62, 9.43, 9.00)
>>>>>
>>>>> d2=c(9.12, 10.81, 10.21, 7.11, 7.23, 7.62, 7.69, 7.59, 5.73,
>>>>> 5.39, 5.35, 5.42, 5.32, 3.84, 2.89, 0.70, 1.65, 2.32,
>>>>> 4.01,
>>>>> 4.16, 4.32, 4.74, 5.12, 3.01, 1.91, 7.33,
>>>>> 3.81, 2.27, 2.22, 4.44, 4.76, 7.35, 7.35)
>>>>>
>>>>> for(i in 1:seq_along(Sit)){
>>>>> if(Sit==1){
>>>>> k<-(100 + d1 ^ 2 - d2 ^ 2) / 20
>>>>>
>>>>> } else if(Sit==2){
>>>>> k<-(10 + (100 + d1 ^ 2 - d2 ^ 2) / 20)
>>>>> } else {
>>>>> k<-(400 + d1 ^ 2 - d2 ^ 2) / 40
>>>>> }
>>>>> print(k)
>>>>> }
>>>>>
>>>>> No entanto, o R me retorna a seguinte mensagem:
>>>>>
>>>>> [1] 7.960963 7.919597 7.540307 8.978000 9.382240 9.110080
>>>>> 9.256007 9.220288 9.873500 10.060500 10.211640 10.283200 10.297330
>>>>> 11.480360 11.145437
>>>>> [16] 12.467790 12.880427 13.086003 11.596087 11.678762 11.408330
>>>>> 11.454320 11.775130 12.243588 13.267000 14.748580 10.623057 11.403900
>>>>> 11.452880 10.977882
>>>>> [31] 11.291170 10.872560 10.674437
>>>>> Mensagens de aviso perdidas:
>>>>> 1: In 1:seq_along(Sit) :
>>>>> expressão numérica tem 33 elementos: somente o primeiro usado
>>>>> 2: In if (Sit == 1) { :
>>>>> a condição tem comprimento > 1 e somente o primeiro elemento será
>>>>> usado
>>>>> 3: In if (Sit == 2) { :
>>>>> a condição tem comprimento > 1 e somente o primeiro elemento será
>>>>> usado
>>>>>
>>>>>
>>>>> Parece que ele está calculando usando apenas a terceira fórmula.
>>>>> Alguém pode dar uma luz?
>>>>> Obrigada,
>>>>> Emily
>>>>>
>>>>> _______________________________________________
>>>>> 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.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>>
>>>> *Luciano F. Sgarbi *
>>>>
>>>> * Currículo Lattes <http://lattes.cnpq.br/9788198135883354> **Dep.
>>>> Ecologia, Instituto de Ciências Biológicas I*
>>>> *Universidade Federal de Goiás, campus II, Goiânia-GO, Brasil*
>>>>
>>>> _______________________________________________
>>>> 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.
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Prof. Márcio Souza, M.Sc.
>>> *Pesquisador - UFJF *
>>> *Professor - INSTITUTO VIANNA JÚNIOR (JF)*
>>> * INSTITUTO METODISTA GRAMBERY (JF)*
>>>
>>> http://lattes.cnpq.br/4578008002785684
>>>
>>>
>>>
>>> _______________________________________________
>>> 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.
>>>
>>
>>
>
>
> --
> Evelyn da Fonseca Alecrim Bragion
> Bióloga - Mestre em Ecologia Aplicada
> Doutoranda em Engenharia Florestal
> Laboratório de Ecologia Vegetal
> UFLA - Lavras, MG/Brasil
>
> _______________________________________________
> 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/20140427/a14c6630/attachment.html>
Mais detalhes sobre a lista de discussão R-br