r - 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)
}
完成此任务的最简单和最优雅的方法是什么?谢谢!
解决方案
轻松通过chartr
,
chartr("1234" , "ACGT", mynumbers)
[1] "ACCCAC" "AGTAGT" "AGTAGT" "ATCACG" "CACATA" "CAGCTG" "CAGTCC" "CATCGA"
[9] "CCACGG"
推荐阅读
- ruby-on-rails - 邮件确认后无法登录我的应用程序(= response is Completed 401 Unauthorized)/ Rails / devise / devise-token-auth
- tomcat - 关闭在 Tomcat 上运行的应用程序的控制台日志记录
- python - Airflow DAG 在不同工作节点上执行并行任务
- google-cloud-platform - 图上气流算子的上游没有详细的上游列表
- javascript - 在算术表达式中使用字符串是否安全?
- javascript - VueJS Firebase 应用程序导出默认错误的问题
- python - 尝试读取和查询 JSON 文件时出现 Python 错误
- xamarin - Xamarin.Forms - iOS DisplayAlert 按钮颜色
- microsoft-teams - 如何将 HP Slice Elite 从 ZoomRooms 更改为 TeamsRooms?
- python - 在 Python 中使用条件逻辑连接表