gpt4 book ai didi

r - 按条件在字符序列中粘贴符号

转载 作者:行者123 更新时间:2023-12-04 10:51:59 25 4
gpt4 key购买 nike

我有一个矢量 chars一些字符:

chars <- c("check24  smavey  dr klein", "smava", "check24, interhyp", 
"verivox check24 dr. klein", "dr. klein", NA, "dr. weber",
"dr. klein,", NA, "check24 verivox")

目标是粘贴/插入“_”,如果它们之间有空格并满足以下条件:
  • 序列之间没有逗号(例如 Name1, Name2 Name3 应该变成 Name1, Name2_Name3 )。
  • 它们之间没有任何意义(例如 Dr. Name1 Name2 Name3 应该变成 Dr. Name1_Name2_Name3 )。
  • 空格之间的长度是,两边的字符序列 >= 4(例如 AAA AAAA AAAA AAAA 应该变成 AA AAAA_AAAA_AAAA )。

  • 我尝试使用此功能:

    library(stringr)

    f = function(x) {
    ifelse(grepl(".{4} .{4}", x) & !grepl(",|[A-z]{2}/. ", x), str_replace_all(x, "\\s+", "_"), x)
    }

    f(chars)
    #> [1] "check24_smavey_dr_klein" "smava" "check24, interhyp" "verivox_check24_dr._klein"
    #> [5] "dr. klein" NA "dr. weber" "dr. klein,"
    #> [9] NA "check24_verivox"

    问题是我无法按顺序执行案例(例如 [1][4] )

    知道如何做到这一点吗?

    最佳答案

    这是你追求的吗?

    chars <- c("check24  smavey  dr klein", "smava", "check24, interhyp", 
    "verivox check24 dr. klein", "dr. klein", NA, "dr. weber",
    "dr. klein,", NA, "check24 verivox")

    library(stringr)

    str_replace_all(chars, "([\\w]{4,})(?<=[^,.])[\\s]+([\\w]{4,})", "\\1_\\2")
    #> [1] "check24_smavey dr klein" "smava"
    #> [3] "check24, interhyp" "verivox_check24 dr. klein"
    #> [5] "dr. klein" NA
    #> [7] "dr. weber" "dr. klein,"
    #> [9] NA "check24_verivox"

    创建于 2019-12-21 由 reprex package (v0.2.1)

    使用捕获长度为 4 ( ([\\w]{4,}) ) 或更多的单词组,然后使用前瞻 ( (?<=[^,.]) ) 以避免逗号和句号。

    关于r - 按条件在字符序列中粘贴符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436050/

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