我需要一个R脚本的帮助,我想在字符串中的定义位置替换字符。定义的位置和替换字符将保存在矩阵中。
我经常使用Bioconductor包,但我没有做过任何真正的编程。我没有其他语言的经验,所以我想尽可能使用R.
这是我的示例字符串(30 bp参考氨基酸(AA)序列):
df <- EVHGSGIRVDSNTTFLTPVATGNQYLKDGG
以下是data.frame:
的示例样本&lt; - 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个多态位点。提前谢谢。
答案 0 :(得分: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