translation (recoding) error in r
dataframe, r, replace
Solution
Just use `apply` and transpose:
t(apply (mydf1, 1, atgc))
To use `sapply`, then either use:
`stringsAsFactors=FALSE` when creating your data frame, i.e.
mydf1 <- data.frame(X1, X2, X3, stringsAsFactors=FALSE)
(thanks @joran) or
Change the last line of your function to: `x = xlate[as.vector(x)]`
Problem
Here is small example: ``` 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) ``` Input data frame ``` 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 ``` The function ``` # 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 ``` Problem, AC is not eaqual to 12 in output rather 11, similarly for others. Just mess ! ( Exta: Also I do not know how to get rid of the rownames.)