gpt4 book ai didi

string - 替换包含特定字符串的整个表达式

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

我有一个数据框,其中有一列包含大量文件名,例如:

d <- c("harry11_scott80_norm.avi","harry11_norm.avi","harry11_scott80_lpf.avi", 
"joel51_lpf.avi","rich82_joel51_lpf.avi")

我希望 R 用两个人的名字替换所有表达式,例如 harry11_scott80_norm.avi用表达式 incongruent以及所有单人名如 harry11_norm.avicongruent .我可以用 gsub要做到这一点:
dd <- gsub("harry11_scott80_norm.avi", "incongruent", d) 

但是我得到了很多这样的名字,所以这将是一个非常笨拙的解决方案。所以理想情况下,我想替换包含像 _scott80_ 这样的字符串的 ENTIRE 表达式。与“不一致”。我以为 gsub可以做到这一点,但是当我运行它时:
dd <- gsub("_scott80_", "incongruent", d)

它返回 harry11incongruentnorm.avi ,这显然是因为它只是替换了精确的字符串匹配。我认为有一些方法可以告诉 gsub完全替换包含所选字符串的表达式,但我找不到它。

有一个问题 In R, how do I replace a string that contains a certain pattern with another string? ,但我不知道如何使用 agrep在这种情况下。

编辑:附带奖励问题 - 基于@GSee 的回答,是否有任何函数可以让您传递要替换的字符串列表?例如, gsub(c(".*_scott80_.*", ".*_harry11_.*"), "incongruent", d)不会工作。

最佳答案

这是一种方法

> gsub(".*_scott80_.*", "incongruent", d)
[1] "incongruent" "harry11_norm.avi" "incongruent"
[4] "joel51_lpf.avi" "rich82_joel51_lpf.avi"

或与 grep
> d[grep("_scott80_", d)] <- "incongruent"
> d
[1] "incongruent" "harry11_norm.avi" "incongruent"
[4] "joel51_lpf.avi" "rich82_joel51_lpf.avi"

为了解决您的编辑问题,我相信这会做到(使用 | 表示“或”)
gsub(".*(_scott80_|_harry11_).*", "incongruent", d)

当然,您在 d 中没有任何字符串。匹配 "_harry11_"

关于string - 替换包含特定字符串的整个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275614/

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