gpt4 book ai didi

r - 有条件的gsub替换

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

我有文本数据(在R中),并想用数据框中的其他字符替换某些字符。我认为在空间上使用strsplit并创建一个向量,然后可以使用匹配(%in%)将其粘贴回去,这将是一件容易的事。但是后来我想到了标点符号。句子的最后一个单词和结尾的标点之间没有空格。

我认为,要实现我想要的目标,可能有比成为我的代码的困惑困惑更简单的方法。对于这个问题,我将不胜感激。

#Character String
x <- "I like 346 ice cream cones. They're 99 percent good! I ate 46."

#Replacement Values Dataframe
symbol text
1 "346" "three hundred forty six"
2 "99" "ninety nine"
3 "46" "forty six"

#replacement dataframe
numDF <-
data.frame(symbol = c("346","99", "46"),
text = c("three hundred forty six", "ninety nine","forty six"),
stringsAsFactors = FALSE)

所需结果:
[1] "I like three hundred forty six ice cream cones.  They're ninety nine percent good!  You ate forty six?")

编辑:我最初给此条件gsub命名的原因是,即使不涉及gsub,它在我看来也是如此。

最佳答案

也许这是受乔什·奥布赖恩(Josh O'Brien)的回答启发而实现的:

x <- "I like 346 ice cream cones.  They're 99 percent good!  I ate 46."
numDF <- structure(c("346", "99", "46", "three hundred forty six", "ninety nine",
"forty six"), .Dim = c(3L, 2L), .Dimnames = list(c("1", "2",
"3"), c("symbol", "text")))

pat <- paste(numDF[,"symbol"], collapse="|")
repeat {
m <- regexpr(pat, x)
if(m==-1) break
sym <- regmatches(x,m)
regmatches(x,m) <- numDF[match(sym, numDF[,"symbol"]), "text"]
}
x

关于r - 有条件的gsub替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703398/

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