我的功能需要进行什么reg_sort
所以那个电话:
reg_sort(-"\\w","\\w$","\\d+")
返回:( 期望的结果)
"-\"\\w\",\"\\w$\",\"\\d+\""
我的功能:(评论是我不成功的尝试)
reg_sort <- function(...) {
#reg_list <- toString(x=...)
#reg_list <- substitute(...)
#reg_list <- deparse(...)
#reg_list <- deparse(substitute(...))
#reg_list <- quote(...)
#reg_list <- as.name(substitute(...))
return(reg_list)
}
非常接近:(这样的事情对我来说已经有用了。如果你有其他选择,我很高兴见到)
reg_sort <- function(...) {
reg_list <- toString(match.call()) %>% sub(".*?,","",.) %>% gsub("\\\\","\\",.,fixed=T) %>% trimws
return(reg_list)
}
reg_sort(-"\\w","\\w$","\\d+")
#[1] "-\"\\w\", \\w$, \\d+"
答案 0 :(得分:4)
将省略号参数作为单个逗号连接字符串返回。
reg_sort <- function(...) {
ellipsis <- sapply(as.list(substitute(list(...)))[-1], deparse, simplify="array")
return(paste0(ellipsis, collapse=','))
}
示例:
> reg_sort( -"\\w", "\\w$", "\\d+")
[1] "-\"\\\\w\",\"\\\\w$\",\"\\\\d+\""
请注意,所需输出中的转义不正确 - 您还需要转义反斜杠文字。我们可以使用cat()
查看底层字符串,而不需要额外的R转义层:
> cat(reg_sort( -"\\w", "\\w$", "\\d+"))
-"\\w","\\w$","\\d+"
我们可以看到这是原始参数,包括减号。空白是无法挽回的AFAIK。
答案 1 :(得分:0)
如果您能够在双引号之间传递减号,则以下内容将执行您想要的操作。
reg_sort <- function(...){
f <- function(x, y) paste(x, y, sep = "\",\"")
Reduce(f, list(...))
}
reg_sort("\\w","\\w$","\\d+")
#[1] "\\w\",\"\\w$\",\"\\d+"
reg_sort("-","\\w","\\w$","\\d+")
#[1] "-\",\"\\w\",\"\\w$\",\"\\d+"]