R语言使用stringr包提取数据框列中的指定字符
假设数据框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-7、Bx1-3-5-7、c2-4-6-8都符合要求。 -
%>% lapply(function(x) paste(x, collapse = ", ")):使用管道符将提取结果传给lapply()函数,将每个元素(即每个品种来源)中的指定字符以逗号隔开。 -
%>% unlist():使用管道符将结果展开成一个长度与数据框df的行数相同的向量,并将其赋值给新列亲本。
原文地址: https://www.cveoy.top/t/topic/nomi 著作权归作者所有。请勿转载和采集!