gpt4 book ai didi

r - 查找包含字符序列的字符串,而不管 r 中的顺序

转载 作者:行者123 更新时间:2023-12-04 11:01:35 25 4
gpt4 key购买 nike

我有一个数据框(df)

    V1    V2
1 "BCC" Yes
2 "ABB" Yes

我想查找包含特定字符序列的所有字符串,而不管顺序如何。
例如,如果我有字符串“CBC”或“CCB”,我想得到
    V1    V2
1 "BCC" Yes

我试过 grep,但它只能找到匹配的模式
>df[grep("CBC", df$V1),]
1 V1 V2
<0 rows> (or 0-length row.names)

>df[grep("BCC", df$V1),]
V1 V2
1 "BCC" Yes

最佳答案

我们可以通过拆分列来创建逻辑索引

i1 <- sapply(strsplit(df$V1, ""), function(x) all(c("B", "C") %in% x))
df[i1, , drop = FALSE]
# V1 V2
#1 BCC Yes

如果我们有两个数据集,一个是查找表('df2'),则将列拆分为字符, paste sort ed 元素,并使用 %in% 创建逻辑 vector 用于过滤行
v1n <- sapply(strsplit(df1$v1, ""), function(x) paste(sort(x), collapse=""))
v1l <- sapply(strsplit(df2$v1, ""), function(x) paste(sort(x), collapse=""))
df1[v1n %in% v1l, , drop = FALSE]

数据
df1 <- data.frame(v1 = c("BCC", "CAB" , "ABB", "CBC", "CCB", "BAB", "CDB"),
stringsAsFactors = FALSE)
df2 <- data.frame(v1 = c("CBC", "ABB"), stringsAsFactors = FALSE)

关于r - 查找包含字符序列的字符串,而不管 r 中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com