R:仅当 bool 为 TRUE(条件字符串)时才粘贴()某个字符串?
R: paste() a certain string only if bool is TRUE (conditional strings)?
我有以下代码:
run_name = paste("run", "_", gsub(" ", "_", gsub(":", "", Sys.time())), sep="")
if(ROUNDING) run_name = paste(run_name, "_R", sep="")
生成类似 run_2021-06-29_101105
的名称,对于 ROUNDING = TRUE
它将添加“_R”:run_2021-06-29_101105_R
我想在 run_name 中包含其他参数,并且可以为每个参数添加一行。但我依稀记得(虽然可能是另一种编程语言)这可以在一行中用这样的东西来实现 (ROUNDING|"R"|"")
:
run_name = paste("run", "_", gsub(" ", "_", gsub(":", "", Sys.time())), (ROUNDING|"R"|"") , sep="")
R 中是否有这样的东西(“条件字符串”的语法?!)?
您可以在语句前添加一个对象
param <- ifelse(ROUNDING,"R","")
然后将其粘贴到您的 runame
:
run_name <- paste("run", "_", gsub(" ", "_", gsub(":", "", Sys.time())),
param,
sep="")
我实际上会使用与您使用 if
/else
(因为 ROUNDING
是标量值)而不是 ifelse
相同的方法,而不是一系列paste
和 gsub
语句只使用 format
.
run_name <- format(Sys.time(), 'run_%Y-%m-%d_%H%M%S')
if(ROUNDING) run_name <- paste0(run_name, '_R')
或者如果你需要单线 -
run_name <- paste0(format(Sys.time(), 'run_%Y-%m-%d_%H%M%S'), if(ROUNDING) '_R' else '')
我们也可以使用case_when
library(dplyr)
param <- case_when(ROUNDING ~"R", TRUE ~"")
我有以下代码:
run_name = paste("run", "_", gsub(" ", "_", gsub(":", "", Sys.time())), sep="")
if(ROUNDING) run_name = paste(run_name, "_R", sep="")
生成类似 run_2021-06-29_101105
的名称,对于 ROUNDING = TRUE
它将添加“_R”:run_2021-06-29_101105_R
我想在 run_name 中包含其他参数,并且可以为每个参数添加一行。但我依稀记得(虽然可能是另一种编程语言)这可以在一行中用这样的东西来实现 (ROUNDING|"R"|"")
:
run_name = paste("run", "_", gsub(" ", "_", gsub(":", "", Sys.time())), (ROUNDING|"R"|"") , sep="")
R 中是否有这样的东西(“条件字符串”的语法?!)?
您可以在语句前添加一个对象
param <- ifelse(ROUNDING,"R","")
然后将其粘贴到您的 runame
:
run_name <- paste("run", "_", gsub(" ", "_", gsub(":", "", Sys.time())),
param,
sep="")
我实际上会使用与您使用 if
/else
(因为 ROUNDING
是标量值)而不是 ifelse
相同的方法,而不是一系列paste
和 gsub
语句只使用 format
.
run_name <- format(Sys.time(), 'run_%Y-%m-%d_%H%M%S')
if(ROUNDING) run_name <- paste0(run_name, '_R')
或者如果你需要单线 -
run_name <- paste0(format(Sys.time(), 'run_%Y-%m-%d_%H%M%S'), if(ROUNDING) '_R' else '')
我们也可以使用case_when
library(dplyr)
param <- case_when(ROUNDING ~"R", TRUE ~"")