基于r中的另一个向量,为向量中的每个元素排序字母

use*_*212 2 r

我有一个矢量看起来像:

SNP <- c("A/G","A/C","A/C","T/C","A/G","A/C","T/G","T/C","A/C","T/G")
Run Code Online (Sandbox Code Playgroud)

第二个向量(REF)是"SNP"中每个元素的两个字母之一的向量:

REF <- c("G","C","A","C","A","A","T","T","C","T")
Run Code Online (Sandbox Code Playgroud)

如果匹配向量"REF"中的相应元素(字母),我想在前面的向量"SNP"中放置每个元素的任何字母.预期的结果是:

SNP <- c("G/A","C/A","A/C","C/T","A/G","A/C","T/G","T/C","C/A","T/G")
Run Code Online (Sandbox Code Playgroud)

nic*_*ola 5

你可以试试:

mapply(function(x,y) paste(y,setdiff(x,y),sep="/"),
         strsplit(SNP,"/",fixed=TRUE),REF) 
#[1] "G/A" "C/A" "A/C" "C/T" "A/G" "A/C" "T/G" "T/C" "C/A" "T/G"
Run Code Online (Sandbox Code Playgroud)