gpt4 book ai didi

R rstats 如何替换字符串中某个位置的单个字符

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

我正在尝试编写一个函数,该函数将接受一个字符串并用另一个字符替换一个字符,但我希望它返回替换该字符的每个排列。我想用 l 替换每个 i 但我不想像在 gsub 中那样在全局范围内这样做,我不想像在 sub 中那样只做第一个。我认为一个例子最能说明这一点。如果我传入 keviin 的名字(有两个 i):

thisFunction("keviin")
[1] kevlin keviln kevlln

所以我回来替换第一个 i,第二个 i,然后两个 i。这听起来像是递归的工作,但首先我需要弄清楚如何只替换第一个 i。然后我可以将结果字符串传递给函数以获得下一个排列。

有人有想法给我推一下吗?我试过这样做,但对我不起作用:
> substr("keviin",4,4) <- "l"
Error in substr("keviin", 4, 4) <- "l" :
target of assignment expands to non-language object

最佳答案

来自@CarlWitthoft 的想法,这个怎么样:

thisFunction<-function(x) {
xsplit<-strsplit(x,"")[[1]]
ipos<-as.vector(gregexpr("i",x)[[1]])
if (length(ipos)==1) {
if (ipos<0) return(x) else {
substring(x,ipos,ipos)<-"l"
return(x)
}
}
combos<-unlist(lapply(seq_along(ipos),combn,x=ipos,simplify=FALSE),recursive=FALSE)
ret<-t(vapply(combos,function(x) {xsplit[x]<-"l";xsplit},character(length(xsplit))))
do.call(function(...) paste(...,sep=""),as.data.frame(ret))
}

thisFunction("keviin")
#[1] "kevlin" "keviln" "kevlln"

关于R rstats 如何替换字符串中某个位置的单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26657394/

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