2017-08-17 90 views
3

这似乎是一个简单的问题,但我找不到答案。我有一个包含调用参数名称的字符向量。在函数中,如果其中一些错误,我想提出警告,并引用名称。警告中引用名称

bad = c("a", "b", "c") 
warning(paste("Variables", paste(bad, collapse = ", "), "are wrong")) 

这给:

Warning message: 
Variables a, b, c are wrong 

,但我需要:

Warning message: 
Variables 'a', 'b', 'c' are wrong 

我想做到这一点,而无需使用外部包。

回答

8

我们可以使用ASCII撇号他\'

warning(paste("Variables", paste0("\'", bad, "\'", collapse = ", "), "are wrong")) 

# Warning message: 
# Variables 'a', 'b', 'c' are wrong 

或单引号由sQuote

warning(paste("Variables", paste(sQuote(bad), collapse = ", "), "are wrong")) 

# Warning message: 
# Variables ‘a’, ‘b’, ‘c’ are wrong 

或双引号通过dQuote

warning(paste("Variables", paste(dQuote(bad), collapse = ", "), "are wrong")) 

# Warning message: 
# Variables “a”, “b”, “c” are wrong 
+0

这是整齐的,但我不会用在左/右报价警告。但是,我根本不会添加引号。 – Roland

+0

@Roland谢谢你,编辑我的答案,但是,用法取决于用户。 –

1

这是你在找什么?

bad = c("'a'", "'b'", "'c'") 
warning(paste("Variables", paste(bad, collapse = ", "), "are wrong")) 

,如果你想节省一些打字,你可以写类似

quotify <- function(x) paste0("'", x, "'") 

bad = quotify(c("a", "b", "c")) 
warning(paste("Variables", paste(bad, collapse = ", "), "are wrong")) 
4

您可以使用此方法:

warning("Variables ", paste0("'", bad, "'", collapse = ", "), " are wrong") 
# Warning message: 
# Variables 'a', 'b', 'c' are wrong 

替代版本为双引号:

warning("Variables ", paste0("\"", bad, "\"", collapse = ", "), " are wrong") 
# Warning message: 
# Variables "a", "b", "c" are wrong 
相关问题