r语言 - 将所有有趣的 arg / 省略号折叠成一个字符串



我的函数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+"

将省略号参数作为单个逗号连接的字符串返回。

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。

如果您负担得起在双引号之间传递减号的费用,则以下内容将满足您的需求。

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+"]

最新更新