这是一个小例子:
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)
输入数据框
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
功能
# 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
问题是,AC的输出不等于12,而是等于11。只是一团糟!
(Exta:而且我也不知道如何摆脱行名。)
最佳答案
只需使用apply
并转置:
t(apply (mydf1, 1, atgc))
要使用
sapply
,请使用以下任一方法:stringsAsFactors=FALSE
创建数据框时,即mydf1 <- data.frame(X1, X2, X3, stringsAsFactors=FALSE)
(感谢@joran)或
将函数的最后一行更改为:
x = xlate[as.vector(x)]
关于r - R中的翻译(重新编码)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353736/