我有以下数据框:
df=read.table(text="A
hwqnewqn,ENS.1kmsdf,jmewhqjwjenj
jjqweq3w,eqwejnqwe,ENS.gkhkgfdlsl.jkmwejre
ENSAAAAAAAAAAAA,bbbbbbbb,cccccccc", header=TRUE)
假设我需要一个新的 B 列,其中只有逗号之间的字符串,以某种方式与 ENS 匹配
所以最终结果应该是:
df=read.table(text="B
ENS.1kmsdf
ENS.gkhkgfdlsl.jkmwejre
ENSAAAAAAAAAAAA", header=TRUE)
有什么办法吗?
在基本 R 中,您可以将
vapply
与 strsplit
一起使用,以使用 grepl
测试“ENS”:
df$B <- vapply(strsplit(df$A, ","), \(x) x[grepl("ENS", x)], as.character(1L))
# A B
# 1 hwqnewqn,ENS.1kmsdf,jmewhqjwjenj ENS.1kmsdf
# 2 jjqweq3w,eqwejnqwe,ENS.gkhkgfdlsl.jkmwejre ENS.gkhkgfdlsl.jkmwejre
# 3 ENSAAAAAAAAAAAA,bbbbbbbb,cccccccc ENSAAAAAAAAAAAA