代码之家  ›  专栏  ›  技术社区  ›  Andre Elrico

将所有有趣的参数/省略号折叠成字符串

  •  2
  • Andre Elrico  · 技术社区  · 6 年前

    我的职责是什么 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+"
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   olooney    6 年前

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

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

    我们可以看到这是原始参数,包括减号。空白是无法挽回的。

        2
  •  0
  •   Rui Barradas    6 年前

    如果你能负担得起在双引号之间传递减号,那么下面的操作就可以了。

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