R: A maneira mais rápida de criar dataframe com uma alternativa ao IFELSE

Eu tenho uma pergunta semelhante a esta neste tópico:Usando R, substitua todos os valores em uma matriz <0,1 por 0?

Mas, no meu caso, tenho um conjunto de dados hipoteticamente maior e limites variáveis. Eu preciso criar um quadro de dados com cada valor recuperado de uma condição usando os valores nas primeiras colunas do mesmo quadro de dados. Esses valores são diferentes para cada linha.

Aqui está um exemplo do quadro de dados:

SNP        A1  A2   MAF     
rs3094315  G   A   0.172  
rs7419119  G   T   0.240  
rs13302957 G   A   0.081  
rs6696609  T   C   0.393 

Aqui está um exemplo do meu código:

seqIndividuals = seq(1:201)
for(i in seqIndividuals) {
  alFrequ[paste("IND",i,"a",sep="")] = ifelse(runif(length(alFrequ$SNP),0.00,1.00) < alFrequ$MAF, alFrequ$A1, alFrequ$A2)
  alFrequ[paste("IND",i,"b",sep="")] = ifelse(runif(length(alFrequ$SNP),0.00,1.00) < alFrequ$MAF, alFrequ$A1, alFrequ$A2)
}

Estou criando duas novas colunas para cada indivíduo "i" em "seqIndividuals" recuperando os valores da coluna "A1" se um valor aleatório for menor que a coluna "MAF" ou "A2" se maior. O código está funcionando muito bem, mas à medida que um conjunto de dados cresce em linhas e colunas (indivíduos), o tempo também aumenta significativamente.

Existe uma maneira de evitar o uso de IFELSE para esta situação, como eu entendo que funciona como um loop? Tentei gerar uma matriz de valores aleatórios e depois substituí-los, mas leva o mesmo tempo ou até mais.

mtxAlFrequ = matrix(runif(length(alFrequ$SNP)*(201)),nrow=length(alFrequ$SNP),ncol=201)
mtxAlFrequ[mtxAlFrequ < alFrequ$MAF] = alFrequ$A1

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion