簡體   English   中英

如何使用包含位置和新字符的矩陣替換特定位置的參考字符串中的字符?

[英]How to replace characters in a reference string at specific positions using a matrix containing the positions and new characters?

我需要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個多態位點。 先感謝您。

這應該使您開始:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM