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