0

我需要有关 R 脚本的帮助,我想在其中替换字符串中已定义位置的字符。定义的位置和替换字符将保存在矩阵中。

我经常使用 Bioconductor 软件包,但我没有做过任何真正的编程。我没有其他语言的经验,所以如果可能的话,我想使用 R。

这是我的示例字符串(30 bp 参考氨基酸 (AA) 序列):

df <- EVHGSGIRVDSNTTFLTPVATGNQYLKDGG

这是一个示例 data.frame:

样本 <- read.csv("samples.csv")

Sample  1   12  17  22  23  25
1       K   N   T   E   N   D
2       E   K   T   E   N   D
3       E   N   T   G   N   Y
4       E   K   T   E   N   D
5       E   N   T   G   K   D
6       K   N   T   E   N   D
7       K   K   T   G   K   D
8       E   K   T   E   N   D
9       E   N   K   G   N   D
10      E   N   T   E   N   D

第 1 列是样本#。我列出了样本 1 - 10。下一列的标签对应于参考序列中的位置。每行包含一个样本的 AA。

我的输出将是样本的唯一完整序列。我需要使用矩阵中包含的信息替换每个样本的参考序列中的 AA,然后将序列打印出来。

Sample  Sample Sequence 
 1      KVHGSGIRVDSNTTFLTPVATENQDLKDGG  
 2      EVHGSGIRVDSKTTFLTPVATENQDLKDGG  
 3      EVHGSGIRVDSNTTFLTPVATGNQYLKDGG  
 4      EVHGSGIRVDSKTTFLTPVATENQDLKDGG  
 5      EVHGSGIRVDSNTTFLTPVATGKQDLKDGG  
 6      KVHGSGIRVDSNTTFLTPVATENQDLKDGG  
 7      KVHGSGIRVDSKTTFLTPVATGKQDLKDGG  
 8      EVHGSGIRVDSKTTFLTPVATENQDLKDGG  
 9      EVHGSGIRVDSNTTFLKPVATGNQDLKDGG  
 10     EVHGSGIRVDSNTTFLTPVATENQDLKDGG  

有没有人有任何建议可以帮助我入门?我的样本集很大,有 225 个样本和 60 个多态位点。先感谢您。

4

1 回答 1

0

这应该让你开始:

my.aa <- "EVHGSGIRVDSNTTFLTPVATGNQYLKDGG"

my.df <- read.table(
   text = "Sample  1   12  17  22  23  25
   1       K   N   T   E   N   D
   2       E   K   T   E   N   D
   3       E   N   T   G   N   Y
   4       E   K   T   E   N   D
   5       E   N   T   G   K   D
   6       K   N   T   E   N   D
   7       K   K   T   G   K   D
   8       E   K   T   E   N   D
   9       E   N   K   G   N   D
   10      E   N   T   E   N   D",
   header = FALSE,
   stringsAsFactors = FALSE
)

my.pos <- as.numeric(my.df[1, -1])

my.df <- my.df[-1, ]

split.aa <- unlist(strsplit(my.aa, ""))

data.frame(sample = my.df$V1, Sequence = do.call(rbind, apply(my.df[,-1], 1, function(x) {
   split.aa[my.pos] <- x
      return(list(paste0(split.aa, collapse = "")))
   })), row.names = NULL)

这使:

   sample                       Sequence
1       1 KVHGSGIRVDSNTTFLTPVATENQDLKDGG
2       2 EVHGSGIRVDSKTTFLTPVATENQDLKDGG
3       3 EVHGSGIRVDSNTTFLTPVATGNQYLKDGG
4       4 EVHGSGIRVDSKTTFLTPVATENQDLKDGG
5       5 EVHGSGIRVDSNTTFLTPVATGKQDLKDGG
6       6 KVHGSGIRVDSNTTFLTPVATENQDLKDGG
7       7 KVHGSGIRVDSKTTFLTPVATGKQDLKDGG
8       8 EVHGSGIRVDSKTTFLTPVATENQDLKDGG
9       9 EVHGSGIRVDSNTTFLKPVATGNQDLKDGG
10     10 EVHGSGIRVDSNTTFLTPVATENQDLKDGG
于 2017-06-19T01:29:14.640 回答