0

トウモロコシの雑種とトウモロコシの近交系に関する試験データを含む data.frame があります。各近交系は、このデータ フレームに一意のエントリを持ちます。さらに、私は 2 つの近交系の交配の結果であるトウモロコシ ハイブリッドを持っています。

近交系のすべてのエントリと雑種のすべてのエントリを抽出し、2 つの個別のベクトルに保存しました。ベクトル 'inbred' には、各近交系のコード化されたエントリ名が含まれています。

inbred <- c("F124", "L258", "F309", "P045", "D634", "D183-43", "F205-35")

ベクトルhybridには、各ハイブリッドのコード化されたエントリ名が含まれています。

hybrid <- c("F124xP045", "F124xD183-43", "F309xP045", "F205-35xL258", "F309xD634")

各ハイブリッドには親として 2 つの近交系があるため、「ハイブリッド」ベクトルの各文字列は最初の近交系で構成され、2 番目の近交系とは「x」で区切られます。

私の目標は、どの近交系が雑種系のいずれかの親コンポーネントであることを見つけることです. 出現回数は私にとって重要ではありません。最終的には、少なくとも 1 つの雑種の一部である固有の近交系の新しいベクターを取得し、それらを 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」で2番目の近交系から分離された最初の近交系で構成されていると思います。したがって、「x」をスプリッターとして使用して F1 リストを分割し、リストを解除して、一意のアイテムを取得するだけです。

それは簡単です:

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