gpt4 book ai didi

r - 如何比较每个索引处两个字符串的字符?

转载 作者:行者123 更新时间:2023-12-05 01:44:00 25 4
gpt4 key购买 nike

我有两个长度相同的字符串。我想按元素比较字符串并为每个索引返回 TRUE 或 FALSE。例如:

string1 <- "abcd1234"
string2 <- "abcd1434"
result <- [T,T,T,T,T,F,T,T]

到目前为止,我已经有了字符串,并且通过取消列出它们创建了字符向量,但到目前为止我还无法让 R 中的任何字符串函数正常工作。我知道我可以使用 for 循环并做一个简单的 == 但我想知道是否有某种向量化的方法可以做到这一点。

str1 <- unlist(str_split(string1, "")) 
str2 <- unlist(str_split(string2, ""))

还有一些情况,其中一个字符串会有一个 _,表明这个字符本质上是一个通配符,不需要检查是否相等。这就是为什么我试图让其中一个正则表达式在 R 中工作,以便我可以用通配符替换 _。

string1 <- "abcd_234"
string2 <- "abcd1224"
result <- [T,T,T,T,T,T,F,T]

最佳答案

apply(do.call(rbind, strsplit(c(string1, string2), "")), 2, function(x){
length(unique(x[!x %in% "_"])) == 1
})
#[1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE

您还可以稍微修改 Rich 已删除的答案

Reduce(f = function(s1, s2){
s1 == s2 | s1 == "_" | s2 == "_"
},
x = strsplit(c(string1, string2), ""))
#[1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE

请注意,第一种方法将允许比较两个以上的字符串

关于r - 如何比较每个索引处两个字符串的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47821084/

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