我希望能够从现有的r变量中删除或插入任意子串.我当前的解决方案使用system(),但我确信有一种更简单,更优雅的方式:
> filename <- "remove_this_my_file.txt"
> (file <- system(paste("echo ", filename, "| sed 's/remove_this_\\(.*\\)/\\1/'",sep=""), intern=T))
[1] "my_file.txt"
顺便说一句,这substr()是不好的,因为子字符串的位置可能因文件名而异.
您可以通过使用R中的正则表达式grep,sub,regexpr,和类似的命令.这听起来像你想要sub或gsub.这些操作是矢量化的,有时会派上用场.
> filename <- sub("remove_this_","",filename)
> filename
[1] "my_file.txt"
如果您习惯使用Perl样式的正则表达式,则需要设置该,perl=TRUE选项.