0

我有一个 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" 

我的方法只产生了包含我试图匹配的任何近交系的杂种。

4

1 回答 1

1

我假设,正如你所说,“'混合'向量中的每个字符串都由第一个近交系组成,它与第二个近交系由一个'x'隔开”。因此,您只需要使用“x”作为拆分器拆分 F1 列表,取消列出并获取唯一项。

这简单:

unique.parents <- unique(unlist(strsplit(hybrid,split="x")))
于 2013-04-26T14:35:04.463 回答