
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@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]