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 - 构建正则表达式 : replacing a number of '?' with an integer equal to the number of '?' s?

    jQuery 不选择 p 标签中的 a 标签

    r - 如何让R显示存储的19位数字?

    r - 'closure' 类型的 ggplot2 条形图对象不可子集化

    r - 定义列组并用 dplyr 对每个组的所有第 i 列求和

    javascript - 替换按特定顺序出现的 javascript 特殊字符

    pandas - 作为新列的范围内正值的数据框计数

    python - 在行中填充数据框中的无值 Pandas Python

    r - 如何计算 R 中的重叠百分比

    r - 如何仅在 geom_label_repel() 中更改文本颜色而不是线条颜色