使用R中的命令paste
,我想使用參數sep
和collapse
,但不能將collapse
縮寫爲coll
或甚至collaps
。而其他功能的部分縮寫工作。粘貼中「collapse」的縮寫?
沒有其他參數要以coll
開頭,這會干擾部分參數匹配。
爲什麼我必須在撥打paste
時輸入整個參數名稱,當我不需要其他功能?
使用R中的命令paste
,我想使用參數sep
和collapse
,但不能將collapse
縮寫爲coll
或甚至collaps
。而其他功能的部分縮寫工作。粘貼中「collapse」的縮寫?
沒有其他參數要以coll
開頭,這會干擾部分參數匹配。
爲什麼我必須在撥打paste
時輸入整個參數名稱,當我不需要其他功能?
我相信這是粘貼的...
,導致您必須使用精確的參數匹配。具體而言,,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
這也是我的理解。在R文檔中有一個「某處」的警告,指出在'...'後面的任何命名參數不能被縮短。 –
[R語言定義](http://cran.r-project.org/doc/manuals/R-lang.html#Argument-matching)的[參見4.3.2參數匹配](http:// cran.r-project.org/doc/manuals/R-lang.html)。 –
所以我的黑客建議'mypaste <-function(sep =「」,collapse = NULL,...)粘貼(sep,collapse,...)':-) –
包裝函數可能會有所幫助,就像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"
雖然這可能對OP有用,我不認爲它真的回答了爲什麼*這個縮寫不起作用,Ari的答案是...... – A5C1D2H2I1M1N2O1R2T1
@Carl,謝謝你的清理。阿南達:我認爲你是正確的,但這對OP還是有幫助的。我認爲阿里做了很好的工作來回答這個問題 –
我真的真的不使用這種縮寫,因爲它由於擴張可能導致錯誤的結果,所以更難以閱讀並且可能產生不可預期的後果rameter匹配。 –