仅当值不为空时才进行条件粘贴

Conditional paste only if a value is not empty

我正在尝试构建降价文档和来自数据库的文本提要。 仅当名称不为空时,我才想用 paste() 构造一个句子。否则不构建。

paste("Hi", name)

是否可以不循环且不抛出错误?

明确一点,如果name为空,Hi应该被打印。

如果空表示未定义,则使用以下任一方法:

if (exists("name")) paste("Hi", name)

try(paste("Hi", name), silent = TRUE)

如果我们知道它已定义但为空意味着它有零个字符:

if (nzchar(name)) paste("Hi", name)

如果我们只想运行 粘贴如果名称已定义且字符数非零,则使用其中任何一个。请注意 && 短路,因此如果 && 的左侧为 FALSE,它将立即 return FALSE 而不会尝试评估右侧,这很重要,因为如果它尝试会产生错误。

if (exists("name") && nzchar(name)) paste("Hi", name)

try(if (nzchar(name)) paste("Hi", name), silent = TRUE)