如何在 paste() 的前两个位置添加“_”符号

how can I add "_" symbol in paste() for at the first two place

paste("plot", "var","m",".pdf", sep = "_")
#[1] "plot_var_m_.pdf"

然而,我想要 plot_var_m.pdf 的输出(不需要最后一个“_”) 我应该如何更改我的代码?

paste(paste("plot", "var","m", sep = "_"),"pdf", sep = ".")

我们可以使用sprintf

sprintf("%s.pdf", paste("plot", "var", "m", sep="_"))
#[1] "plot_var_m.pdf"

另一种选择是sub

sub("_([^_]+)$", ".\1", "plot_var_m_pdf")
#[1] "plot_var_m.pdf"

另一种方法是我们可以删除最后一个 _,这是额外的,

不需要
sub("(.*)\_", "\1", paste("plot", "var","m",".pdf", sep = "_"))
#[1] "plot_var_m.pdf"

如果这些变量名是常量,你也可以这样做:

paste("plot_", "var_","m",".pdf", sep = "")

或者,如果名称发生变化:

paste("plot","_","var","_","m",".pdf",sep="")

另一种方法(在代码之上添加另一层以删除 . 不需要的所有 _. 模式):

gsub('_\.', '\.', paste("plot", "var","m",".pdf", sep = "_"))
# [1] "plot_var_m.pdf"