[R-br] for e If
Éder Comunello
comunello.eder em gmail.com
Sexta Abril 25 18:10:13 BRT 2014
Evelyn e demais colegas, boa tarde!
Acredito que basicamente faltou atribuir o índice (i) dos elementos a serem
usados em cada rodada ou verificação. Pode ser resolvido com uso de loops
ou não. No código abaixo tem três opções que testei.
### <code r>
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)
#############
### Solução 1
#############
for(i in seq_along(Sit)){
if (i==1) k1 <- as.vector(NULL)
if(Sit[i]==1) {ktmp <- (100 + d1[i]^2 - d2[i]^2) / 20}
else if(Sit[i]==2) {ktmp <- (10 + (100 + d1[i]^2 - d2[i]^2) / 20)}
else {ktmp <- (400 + d1[i]^2 - d2[i]^2) / 40}
k1 <- c(k1,ktmp)
}
#############
### Solução 2
#############
for(i in seq_along(Sit)) {
if (i==1) k2 <- as.vector(NULL)
ktmp <- (switch(Sit[i], (100 + d1[i]^2 - d2[i]^2) / 20,
(10 + (100 + d1[i]^2 - d2[i]^2) / 20),
(400 + d1[i]^2 - d2[i]^2) / 40))
k2 <- c(k2,ktmp)
}
#############
### Solução 3
#############
{
df <- data.frame(Sit, d1, d2)
df$k3 <- NA; df
i <- which(Sit==1); df$k3[i] <- (100 + d1[i]^2 - d2[i]^2) / 20
i <- which(Sit==2); df$k3[i] <- (10 + (100 + d1[i]^2 -
d2[i]^2) / 20)
i <- which(Sit==3); df$k3[i] <- (400 + d1[i]^2 - d2[i]^2) / 40
df
k3 <- df$k3
}
all.equal(k1, k2, k3)
# [1] TRUE
### </code>
Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
Dourados, MS - [22 16.5'S, 54 49'W]
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140425/2b1d6545/attachment.html>
Mais detalhes sobre a lista de discussão R-br