2013-04-26 45 views
0

我有一個data.frame,其中包含關於玉米雜交種和玉米近交系的試驗數據。每個近交系在該數據框中都有唯一的條目。另外,我還有玉米雜交種,這是兩條近交系雜交的結果。使用grep匹配字符串的變化模式

我提取了近交系和雜種的所有條目的所有條目,並將它們存儲在兩個單獨的向量中。 '近交' 載體包含每個近交系的編碼條目名稱:

近交< - C( 「F124」, 「L258」, 「F309」, 「P045」, 「D634」,「D183- 43「,」F205-35「)

載體'hybrid'包含每個雜種的編碼條目名稱。

混合< - C( 「F124xP045」, 「F124xD183-43」, 「F309xP045」, 「F205-35xL258」, 「F309xD634」)

每個混合有兩個自交系作爲父母,因此'hybrid'向量中的每個字符串都由第一個近交系組成,該第一個近交系與第二個近交系分開了'x'。

我的目標是找出哪些自交系是任何雜種系的親本組分。發生次數對我來說並不重要。最終,我想獲得一個獨特的近交系的新載體,它們是至少一個雜種的一部分,並將它們用於PCA。

我嘗試使用grep()函數從向量'hybrid'中的vector'inbred'中搜索任何字符串,並使用unique()函數排除所有多次出現的匹配。我特別的問題是,這種模式總是在變化,因爲我試圖在每次「混合」向量中搜索不同的近交系。

這是我用來獲得唯一匹配的代碼。

unique.parents < - 獨特(grep的(膏(近交,塌陷= 「|」), 混合,值= TRUE))

unique.parents

[1]「F124xP045 「‘F124xD183-43’‘F309xP045’‘F205-35xL258’‘F309xD634’

我的方法只取得了其中包含的任何自交系,我試圖匹配的雜交品種。

回答

1

我假設,正如你所說的,「混合型」向量中的每個字符串由第一個近交系組成,它與第二個近交系之間由'x'分開。 因此,你只需要使用「x」作爲拆分器,拆分F1列表並取得獨特的項目。

這很容易:

unique.parents < - 唯一的(不公開(strsplit(混合式,分體式= 「X」)))

+0

這是偉大的。奇蹟般有效! – matthias 2013-04-26 15:11:37