Aquí es pequeño ejemplo:traducción (recodificación) error en 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)
trama de datos de entrada
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 función
# 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 es no eaqual a 12 en salida en lugar de 11, de manera similar para otros. ¡Solo lío!
(exta: También no sé cómo deshacerse de los rownames.)
La solución más simple para usted podría ser simplemente editar 'x = xlate [x]' a 'x = xlate [as.character (x)]', ya que ese es el bit que está causando el error. (Los 'x' son vectores de clase 'factor', y los valores enteros del factor (en lugar de las cadenas de caracteres asociadas) se usan en la indexación). –
Además, para deshacerse de los nombres de fila, simplemente haga' rownames (mydf) <- NULL'. –