Obter valor de outra coluna com base no valor de uma coluna

Para cada linha em um quadro de dados, quero copiar um valor de uma coluna para outra, dependendo de um valor na terceira coluna.

Eu tentei fazê-lo com um loop for combinado e se a função:

    ## example

condition <- c("1","2","2","1","2","","3","3")
SZ01 <- c("1","1","1","1","1","","1","1")
SZ02 <- c("2","2","2","2","2","","2","2")
SZ03 <- c("3","3","3","3","3","","3","3")


df <- data.frame(cbind(condition,SZ01,SZ02,SZ03), stringsAsFactors = FALSE)


df$retribution <- NULL
df$special_prevention <- NULL
df$general_prevention <- NULL


for (i in 1:length(df$condition)){ 

  if (df$condition[i] == 1){

    df$retribution[i] <- df$SZ01[i]
    df$special_prevention[i] <- df$SZ02[i]
    df$general_prevention[i] <- df$SZ03[i]


  }else if (df$condition[i] == 2) {

    df$retribution[i] <- df$SZ02[i]
    df$special_prevention[i] <- df$SZ03[i]
    df$general_prevention[i] <- df$SZ01[i]

  }else if (df$condition[i] == 3) {

    df$retribution[i] <- df$SZ03[i]
    df$special_prevention[i] <- df$SZ01[i]
    df$general_prevention[i] <- df$SZ02[i]

  } else {
    df$retribution[i] <- "missing_condition"
    df$special_prevention[i] <- "missing_condition"
    df$general_prevention[i] <- "missing_condition"

  }
}

Isso parece funcionar (nenhuma mensagem de erro), mas olhando para meus dados, deve haver algo errado.

Por exemplo, a linha 1 possuicondition == 1. Isso significa que, para esta linhadf$retribution deve receber o mesmo valor que o da linha 1 dedf$SZ01.

Mas isso não acontece. Existe alguém que possa ver o erro que cometi?

questionAnswers(1)

yourAnswerToTheQuestion