首页 > 解决方案 > R:根据关系表将数字字符串转换为字母字符串

问题描述

我有一个mynumbers带有几串数字的向量,比如:

mynumbers <- c("122212", "134134", "134134", "142123", "212141", "213243", "213422", "214231", "221233")

我的目标是按照这些关系将这些字符串翻译成字母串:

1=A
2=C
3=G
4=T

我想将其封装在一个函数中,以便:

myletters <- translate_function(mynumbers)

myletters因此将是:

myletters <- c("ACCCAC", "AGTAGT", "AGTAGT", "ATCACG", "CACATA", "CAGCTG", "CAGTCC", "CATCGA", "CCACGG")

我正在考虑这样的功能,显然不正确......我在处理strsplit和列表时开始感到困惑......

translate_function <- function(numbers){
  map_df <- data.frame(num=1:4, nuc=c('A','C','G','T'))
  #strsplit numbers
  split_numbers <- strsplit(numbers, '')
  letters <- paste(sapply(split_numbers, function(x) map_df$nuc[which(map_df$num==x)]), collapse='')
  
  return(letters)
}

完成此任务的最简单和最优雅的方法是什么?谢谢!

标签: rstringfunctiontranslate

解决方案


轻松通过chartr,

chartr("1234" , "ACGT", mynumbers)
[1] "ACCCAC" "AGTAGT" "AGTAGT" "ATCACG" "CACATA" "CAGCTG" "CAGTCC" "CATCGA"
[9] "CCACGG"

推荐阅读