Oi pessoal, k é um vetor mesmo. Com a solução da Deisy as mensagens de erro desapareceram, no entanto os valores que retornam são relativos a sit==3. Não estou em casa agora, quando chegar testo a outra solução do Leandro. Muito obrigada pela disposição! Ah, só uma coisa, meu nome é Evelyn, rsrs o autocorretor mudou para Emily.
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@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.674437Mensagens de aviso perdidas:1: In 1:seq_along(Sit) :expressão numérica tem 33 elementos: somente o primeiro usado2: In if (Sit == 1) { :a condição tem comprimento > 1 e somente o primeiro elemento será usado3: In if (Sit == 2) { :a condição tem comprimento > 1 e somente o primeiro elemento será usadoParece que ele está calculando usando apenas a terceira fórmula. Alguém pode dar uma luz?Obrigada,Emily
_______________________________________________
R-br mailing list
R-br@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
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@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.