![](/img/trans.png)
[英]R - Dataframe - Replace characters in a string using two columns containing lists of positions and characters
[英]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.