Olá pessoal,

Eu possuo um banco de dados com com quase 900 mil linhas e 23 colunas. Segue um exemplo simplificado abaixo:


set.seed(321)
v<-data.frame(rbind(sample(1:3,10,replace = T),
                    sample(1:3,10,replace = T),
                    sample(1:3,10,replace = T),
                    sample(1:3,10,replace = T),
                    rep(1,10)))


> v
  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1  3  1  2  2  3  2  1  2  3   2
2  1  1  2  3  2  3  3  1  1   1
3  1  1  2  2  2  3  2  1  3   1
4  2  3  3  2  3  1  3  3  2   1
5  1  1  1  1  1  1  1  1  1   1


Para cada linha eu quero determinar qual a coluna do primeiro valor que não é duplicado do primeiro elemento da linha (coluna 1) e salvar em um vetor o numero da coluna do primeiro elemento não duplicado.
Assim,

> which(v[1,]!=v[1,1])[1]
[1] 2

Ou seja, a segunda coluna possui o primeiro elemento diferente do elemento na primeira coluna.

Eu tentei fazer um loop para fazer isso para todas as linhas, mas devido ao grande número de linhas está demorando muito tempo.

x<-numeric(nrow(v))
for(i in 1:nrow(v)){

    x[i]<-which(v[i,]!=v[i,1])[1]
}

> x
[1]  2  3  3  2 NA    # o valor NA é porque na quinta linha todos os valores são iguais.

Alguém tem idéia de como eu posso fazer isso de forma mais rápida??

Obrigado antecipadamente,

Guilherme