r - R中的翻译(重新编码)错误

标签 r replace dataframe

这是一个小例子:

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/

相关文章:

java - 未从字符串中正确删除停用词

在vim中搜索和替换被拉取的文本的内容

python - Pandas 按日期获取以前的数据框

javascript - 使用javascript替换图像和文本

r - 仅当 df1 中的行 ID 值也存在于 df2 中时才追加行

python - 使用类型为 "object"的 numpy 数组创建混合类型的 Pandas Dataframe

r - 如何在 R 函数中传递列名称?

r - 如何在 Shiny 应用程序的 selectModUI 中更新传单 map ?

r - 如何聚合 R 行中的每 4 行

r - 在 R 中的向量中保持字符串出现的滚动计数