【问题标题】:Using variable input for str_extract_all in R在 R 中为 str_extract_all 使用变量输入
【发布时间】:2021-03-21 21:27:16
【问题描述】:

在 R 和一般编码方面,我非常喜欢。我最近一直在为一个语言学课程做一个 CS 项目,通过这个项目我找到了围绕在 指环王 中各种自然景观单词的单词。例如,我有兴趣找到围绕“溪流”、“山”等词使用的描述性词。

无论如何,为了从文本中提取所有这些单词,我一直在处理 this 帖子。单独运行此命令时,它可以工作:

stringr::str_extract_all(text, "([^\\s]+\\s){4}stream(\\s[^\\s]+){6}")

其中“流”是我要使用的特定词。前后的数字指定了我要提取的前后的字数。

但是,我有兴趣将这个(和其他一些东西)组合到一个函数中,您需要在其中插入要搜索的文本以及要获取上下文的单词。但是,据我修修补补,除了特定的单词之外,我无法在上面的代码中使用任何东西。在用 R 编写函数的上下文中,是否有一种方法可以包含上述代码,但要使用变量输入,例如

stringr::str_extract_all(text, "([^\\s]+\\s){4}WORD(\\s[^\\s]+){6}")

其中 WORD 是您在整个函数中指定的任何内容:

function(text,WORD)
对于这篇文章的普遍明显的新意,我深表歉意。我对这一切都很陌生,但非常感谢您提供的任何帮助。

【问题讨论】:

    标签: r text-mining stringr


    【解决方案1】:

    这就是你要找的,如果我理解正确的话,

    my_fun <- function(input_text, word) {
        
        
        stringr::str_extract_all(
            string = input_text,
            pattern = paste("([^\\s]+\\s){4}", word,  "(\\s[^\\s]+){6}", sep = "")
        )
        
        
        
    }
    

    愿埃雅仁迪尔之光永远照耀你!

    【讨论】:

    • 这有帮助,谢谢!只需要用引号/括号编辑一些小东西,但它现在可以工作了。
    • 你必须改变哪一部分?让我们更正它,这样我们就可以帮助有相同问题的潜在读者!
    • 关键是在第一个引号后立即添加一个左括号:如:("([^\\s]+\\s){4}", word, "(\\s[^\\s]+){6}", sep = ""))
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 2017-05-20
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2015-10-22
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多