假设数据框df的品种来源列为'varieties',可以使用以下代码提取指定字符:

library(stringr)

df$亲本 <- str_extract_all(df$varieties, "[A-Za-z]+[-x]?\d+[-\d]*") %>%
  lapply(function(x) paste(x, collapse = ", ")) %>%
  unlist()

解释一下代码:

  • str_extract_all(df$varieties, "[A-Za-z]+[-x]?\d+[-\d]*"):使用str_extract_all()函数从品种来源列中提取所有符合要求的指定字符。正则表达式[A-Za-z]+[-x]?\d+[-\d]*表示匹配至少一个英文字母(无论大小写),可能含有一个-或x,后面跟至少一个数字,后面可能还有连续的数字和-。例如:A3-5-7Bx1-3-5-7c2-4-6-8都符合要求。

  • %>% lapply(function(x) paste(x, collapse = ", ")):使用管道符将提取结果传给lapply()函数,将每个元素(即每个品种来源)中的指定字符以逗号隔开。

  • %>% unlist():使用管道符将结果展开成一个长度与数据框df的行数相同的向量,并将其赋值给新列亲本

R语言使用stringr包提取数据框列中的指定字符

原文地址: https://www.cveoy.top/t/topic/nomi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录