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