gpt4 book ai didi

R - 计数一个字符串和另一个字符串的字符之间的匹配,没有替换

转载 作者:行者123 更新时间:2023-12-04 02:02:49 26 4
gpt4 key购买 nike

我有一个关键字(例如“绿色”)和一些文字(“我不喜欢他们,我是!”)。

我想看看关键字('g'、'r'、'e'、'e'、'n')中有多少字符出现在文本中(以任何顺序)。

在这个例子中,答案是 3 - 文本没有 G 或 R,但有两个 E 和一个 N。

我的问题是,如果文本中的一个字符与关键字中的一个字符匹配,则它不能用于匹配关键字中的不同字符。

例如,如果我的关键字是“green”,那么“匹配字符”的数量仍然是 3(一个 N 和两个 E),因为文本中只有两个 E,而不是 3(匹配关键字中的第三个 E) .

我怎么能用R写这个?这只是在我内存的边缘打勾 - 我觉得这是一个常见问题,只是措辞不同(有点像没有替换的采样,但是“匹配没有替换”?)。

例如。

keyword <- strsplit('greeen', '')[[1]]
text <- strsplit('idonotlikethemsamiam', '')[[1]]
# how many characters in keyword have matches in text,
# with no replacement?
# Attempt 1: sum(keyword %in% text)
# PROBLEM: returns 4 (all three Es match, but only two in text)

更多预期输入/输出示例(关键字、文本、预期输出):
  • 'green', 'idonotlikethemsamiam', 3 (G, E, E)
  • 'green', 'idonotlikethemsamiam', 3 (G, E, E)
  • 'red', 'idonotlikethemsamiam', 2 (E 和 D)
  • 最佳答案

    函数 pmatch() 对此非常有用。虽然在这里使用 length 是本能的,但 length 没有 na.rm 选项。所以为了解决这个麻烦,使用 sum(!is.na()) 。

    keyword <- unlist(strsplit('greeen', ''))
    text <- unlist(strsplit('idonotlikethemsamiam', ''))

    sum(!is.na(pmatch(keyword, text)))

    # [1] 3

    keyword2 <- unlist(strsplit("red", ''))
    sum(!is.na(pmatch(keyword2, text)))

    # [1] 2

    关于R - 计数一个字符串和另一个字符串的字符之间的匹配,没有替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928326/

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