R 误解子函数

R 误解子函数,r,regex,gsub,R,Regex,Gsub,我正在开发一个闪亮的应用程序,它通过一个html文件循环,将一个短语的实例替换为相对于其位置的不同短语 也就是说,aa第一次来的时候,我把bluh, aa第二次来的时候,我放了gfgf 我有一张按顺序排列的第二个短语的表格 我认为我误解了子功能文档: 两个*子功能的不同之处在于,子功能仅替换第一个 模式的引用,而gsub替换所有引用 但这里有一个最小的可重复的例子: tt <- c("aa", "aa","bb","aa") sub("aa","test",tt) # [1] "test

我正在开发一个闪亮的应用程序,它通过一个html文件循环,将一个短语的实例替换为相对于其位置的不同短语

也就是说,aa第一次来的时候,我把bluh, aa第二次来的时候,我放了gfgf

我有一张按顺序排列的第二个短语的表格

我认为我误解了子功能文档:

两个*子功能的不同之处在于,子功能仅替换第一个 模式的引用,而gsub替换所有引用

但这里有一个最小的可重复的例子:

tt <- c("aa", "aa","bb","aa")

sub("aa","test",tt)
# [1] "test" "test" "bb"   "test"

gsub("aa","test",tt)
# [1] "test" "test" "bb"   "test"

tt
# [1] "aa" "aa" "bb" "aa"
这样我就可以循环通过:

og.list <- c("aa","cat","aa","cat","aa")

repl.list <- c("the","is","happy")

for(i in 1:3){
  og.list <- sub("aa",repl.list[i], og.list)
} 
取而代之的是,所有的aa都变成了一个。我原以为gsub就是这么做的,但实际上它既是sub又是gsub

多谢各位

 Thank you Wiktor^. 
我现在明白了,我需要将每个项目分离成它自己的字符串,然后再细分

 og.list <- c("aa","cat","aa","cat","aa"
 repl.list <- c("the","is","happy")
 og.index <- grep("aa",og.list) 

 for(i in 1:3){ 
 curr.index <- og.index[i] 
 og.list[curr.index] <- sub("aa",
                             repl.list[i],
                             og.list[curr.index])
 } 

我想你可能想要这个:

og.list[og.list == "aa"] <- repl.list
#[1] "the"   "cat"   "is"    "cat"   "happy"

sub仅替换模式的第一个匹配项,而gsub替换给定字符串中的所有匹配项,而不是字符向量。好啊所以我必须在两个索引之间做这件事,基本上?如果repl.list和og.index的长度不一样,它会循环使用repl.list吗?谢谢,我不知道有这么简单的答案。但是这样做非常有意义,因为这将实现一个完美的并行交换。是的,它将循环使用,尽管我们可以很容易地调整解决方案,而不是分配NA
og.list[og.list == "aa"] <- repl.list
#[1] "the"   "cat"   "is"    "cat"   "happy"