R 使用公共标识符连接字符串 s1

R 使用公共标识符连接字符串 s1,r,R,在这种情况下,它将执行您希望它执行的操作,但我怀疑从长远来看,您可能需要一个更通用的解决方案。试试这个 gsub(" A\\*01 ", " ", paste(s1, s2, s3, sep=" ", collapse="")) 对于一个更通用的解决方案,我假设您有一个文件,其中有一堆看起来像问题中的行。如果是这样的话,那么下面的内容应该能满足你的需要 > concat [1] "A*01 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA C

在这种情况下,它将执行您希望它执行的操作,但我怀疑从长远来看,您可能需要一个更通用的解决方案。

试试这个

gsub(" A\\*01 ", " ", paste(s1, s2, s3, sep=" ", collapse=""))

对于一个更通用的解决方案,我假设您有一个文件,其中有一堆看起来像问题中的行。如果是这样的话,那么下面的内容应该能满足你的需要

> concat
[1] "A*01 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG"
库(stringr)
图书馆(plyr)

dat您的预期输出是什么?
paste
paste0
是R中主要的字符串连接工作。我不确定“使用标识符A*01”是什么意思.字符串中的第一个元素是刚刚编辑的标识符,包括预期的输出。是否存在一个较大的数据结构或文件,其中有许多带有
a*01
(和其他)前缀的行?i、 是否应该有一个更通用的解决方案,根据提交的前缀标准进行连接?这是一个非常好的解决方案。非常感谢你!记住用文件名替换
textConnection(…)
位:-)嗨,hrbmstr,这些正则表达式真让我受不了。如果标识符是“A*01:01:01:01”、“A*01:01:01:02”、“A*01:01:01:02N”、“A*03:01:01:01”。。。如何更改正则表达式“(^A\*[0-9]+)”以匹配此值?正则表达式通常是一种神秘的魔法咒语。对于那些人来说,“(^A\*[0-9\\:]+)”应该可以。我可能需要在答案中加入这一点,因为双重逃避似乎在评论中消失了)。
gsub(" A\\*01 ", " ", paste(s1, s2, s3, sep=" ", collapse=""))
> concat <- paste(s1, sub("A[*]01 ", "", s2), sub("A[*]01 ", "", s3))
> identical(sT, concat)
[1] TRUE
> concat
[1] "A*01 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG"
library(stringr)
library(plyr)

dat <- readLines(textConnection("A*01 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC
A*01 TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC
A*01 TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG
A*02 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC
A*02 TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC
A*02 TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG
A*03 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC
A*04 TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC
A*04 TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG"))


dat.df <- data.frame(prefix=str_match(dat, "(^A\\*[0-9]+) ")[,2],
                     sequence=str_match(dat, "\ (.*)$")[,2], stringsAsFactors=FALSE)

res <- daply(dat.df, .(prefix), .fun=function(x) {
  return(paste(x[1,]$prefix, paste(x$sequence, sep=" ", collapse=" "), 
               sep=" ", collapse=""))
})

names(res) <- NULL

print(res)

## [1] "A*01 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG"
## [2] "A*02 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG"
## [3] "A*03 ATG GCC GTC ATG GCG CCC CGA ACC CTC CTC CTG CTA CTC TCG GGG GCC CTG GCC"              
## [4] "A*04 TCC CAC TCC ATG AGG TAT TTC TTC ACA TCC GTG TCC CCC GGC CGC GGG GAG CCC TAC GTG GAC GAC ACG CAG TTC GTG CGG TTC GAC AGC GAC GCC GCG AGC CAG AAG"