给定三个字符串:

seq <- c("abcd", "bcde", "cdef", "af", "cdghi")

我想进行多重序列比对,以便得到以下结果:

abcd
 bcde
  cdef
a    f
  cd  ghi

使用msa包中的msa()函数,我try 了:

msa(seq, type = "protein", order = "input", method = "Muscle")

并得到以下结果:

    aln     names
 [1] ABCD--- Seq1
 [2] -BCDE-- Seq2
 [3] --CD-EF Seq3
 [4] -----AF Seq4
 [5] --CDGHI Seq5
 Con --CD-?? Consensus   

我想将此函数用于可以包含任何unicode字符的序列,但在本示例中,该函数已经给出了一个警告:找到了无效的字母.有什么 idea 吗?

推荐答案

在base R中有一个输出表的解决方案:

seq <- c("abcd", "bcde", "cdef", "af", "cdghi")

all_chars <- unique(unlist(strsplit(seq, "")))

tab <- t(apply(do.call(rbind, lapply(strsplit(seq, ""), 
       function(x) table(factor(x, all_chars)))), 1,
       function(x) ifelse(x == 1, all_chars, " ")))

我们可以打印不带引号的输出,以便更清楚地查看:

print(tab, quote = FALSE)
#>      a b c d e f g h i
#> [1,] a b c d          
#> [2,]   b c d e        
#> [3,]     c d e f      
#> [4,] a         f      
#> [5,]     c d     g h i

reprex package(v2.0.1)于2022年5月25日创建

R相关问答推荐

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

在R中列表的结尾添加数字载体

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

根据选中三个复选框中的一个或两个来调整绘图

如何通过ggplot2添加短轴和删除长轴?

2个Rscript.exe可执行文件有什么区别?

从多个可选列中选取一个值到一个新列中

如何提取R中其他字符串和数字之间的字符串?

网络抓取新闻标题和时间

如何更改包中函数中的参数?

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

排序R矩阵的行和列

如何将图例文本添加到图例符号中

如何在R中的两列以上使用联合(&U)?

Ggplot2:添加更多特定 colored颜色 的线条

reshape 数据帧-基于组将行转换为列

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`

如何在GGPlot中控制多个图例和线型

如果缺少时间,如何向日期-时间列添加时间

R data.设置函数&;连接中的列值而不使用for循环的表方法?