Ecco piccolo esempio:Traduzione (ricodifica) errore di r
X1 <- c("AC", "AC", "AC", "CA", "TA", "AT", "CC", "CC")
X2 <- c("AC", "AC", "AC", "CA", "AT", "CA", "AC", "TC")
X3 <- c("AC", "AC", "AC", "AC", "AA", "AT", "CC", "CA")
mydf1 <- data.frame(X1, X2, X3)
ingresso frame di dati
X1 X2 X3
1 AC AC AC
2 AC AC AC
3 AC AC AC
4 CA CA AC
5 TA AT AA
6 AT CA AT
7 CC AC CC
8 CC TC CA
La funzione
# Function
atgc <- function(x) {
xlate <- c("AA" = 11, "AC" = 12, "AG" = 13, "AT" = 14,
"CA"= 12, "CC" = 22, "CG"= 23,"CT"= 24,
"GA" = 13, "GC" = 23, "GG"= 33,"GT"= 34,
"TA"= 14, "TC" = 24, "TG"= 34,"TT"=44,
"ID"= 56, "DI"= 56, "DD"= 55, "II"= 66
)
x = xlate[x]
}
outdataframe <- sapply (mydf1, atgc)
outdataframe
X1 X2 X3
AA 11 11 12
AA 11 11 12
AA 11 11 12
AG 13 13 12
CA 12 12 11
AC 12 13 13
AT 14 11 12
AT 14 14 14
problema, AC è non eaqual a 12 nel uscita piuttosto 11, in modo simile per gli altri. Solo pasticcio!
(Exta: Anche io non so come sbarazzarsi delle rownames.)
La soluzione più semplice per voi potrebbe essere semplicemente modificare 'x = xlate [x]' in 'x = xlate [as.character (x)]', poiché questo è il bit che sta causando l'errore. (I 'x' sono vettori di classe 'factor', e i valori interi del fattore (piuttosto che le stringhe di caratteri associati) vengono utilizzati nell'indicizzazione.) –
Inoltre, per sbarazzarsi dei nomi, basta fare' rownames (mydf) <- NULL'. –