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