粘贴中“崩溃”的缩写?

时间:2012-12-05 13:36:14

标签: r argument-matching

在R中使用命令paste,我想同时使用sepcollapse两个参数,但您不能将collapse缩写为coll甚至{ {1}}。然而对于其他功能,部分缩写起作用。

没有其他崩溃的参数以collaps开头,这会干扰部分参数匹配。

为什么在调用coll时我必须输入整个参数名称,而不需要其他功能?

2 个答案:

答案 0 :(得分:22)

我认为粘贴中的...导致您必须使用精确的参数匹配。具体而言,,collapse在参数列表中的...后来到这一事实。

演示:

f1 <- function(x, collapse) cat("collapse",collapse)
f2 <- function(..., collapse) cat("collapse",collapse)
f3 <- function(collapse, ...) cat("collapse",collapse)

> f1(c="test",1)
collapse test
> f2(1,c="test")
Error in base::cat(...) : argument "collapse" is missing, with no default
> f2(1,collapse="test")
collapse test
> f3(c="test",1)
collapse test

答案 1 :(得分:2)

包装函数可能会有所帮助,就像paste0

一样
p <- function(..., s=" ", clap=NULL) {   # or whichever abbreviation you prefer. I originally had `col`, but that was dumb. 
   paste(..., sep=s, collapse=clap)
}

p0 <- function(...,  clap=NULL) {
   paste(..., sep="", collapse=clap)
}

例如:

p(c("hello", "world"), c("abc", "123"), clap="$")
# [1] "hello abc$world 123"


p0(c("hello", "world"), c("abc", "123"), clap="$")
# [1] "helloabc$world123"