我有一个 data.frame,其中包括玉米杂交种和玉米自交系的试验数据。每个近交系在此数据框中都有一个唯一的条目。此外,我有玉米杂交种,它们是两个自交系杂交的结果。
我提取了近交系的所有条目和杂交系的所有条目,并将它们存储在两个单独的向量中。向量“近交”包含每个近交系的编码条目名称:
inbred <- c("F124", "L258", "F309", "P045", "D634", "D183-43", "F205-35")
该向量hybrid
包含每个混合的编码条目名称。
hybrid <- c("F124xP045", "F124xD183-43", "F309xP045", "F205-35xL258", "F309xD634")
每个杂种有两个自交系作为亲本,因此“杂种”向量中的每个字符串都由第一个自交系组成,它与第二个自交系由一个“x”隔开。
我的目标是找出哪些自交系是任何杂交系的亲本成分。我对出现的次数不感兴趣。最终,我想获得一个独特的近交系的新载体,这些系至少是一个杂种的一部分,并将它们用于 PCA。
我尝试使用 grep() 函数从向量 'hybrid' 中的向量 'inbred' 中搜索任何字符串,并使用 unique() 函数来排除所有多次出现的命中。我的特别问题是,模式总是在变化,因为我每次都尝试在我的“混合”向量中搜索不同的近交系。
这是我用来获取唯一匹配项的代码。
unique.parents <- unique(grep(paste(inbred, collapse= "|"),hybrid, value=TRUE))
unique.parents
#[1] "F124xP045" "F124xD183-43" "F309xP045" "F205-35xL258" "F309xD634"
我的方法只产生了包含我试图匹配的任何近交系的杂种。