Soru “Çökme” nin yapıştırmada kısaltılması mı? [kapalı]


Komutu kullanarak paste R'de her iki argümanı kullanmak istedim sep ve collapseama kısalmazsın collapse için coll ya da collaps. Yine de diğer fonksiyonlar için kısmi kısaltma çalışmaları.

İle başlayacak başka bir argüman yoktur. collkısmi argüman eşleşmesini engelleyebilir.

Arama yaparken neden tüm argüman adını yazmalıyım? paste, diğer işlevler için zorunda olmadığım zaman?


17
2017-12-05 13:36


Menşei


Aslında, bu tür bir kısaltmayı gerçekten okumamıştım çünkü genişlemenin yanlış parametre eşleşmesine yol açabileceğinden, okunması daha zor ve beklenmedik sonuçlara sahip olabiliyor. - Paul Hiemstra


Cevaplar:


Ben inanıyorum ... yapıştırmada, tam argüman eşlemesini kullanmanız gerekir. Özellikle, aslında ,collapse geliyor sonra  ... argüman listesinde.

gösteri:

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

22
2017-12-05 13:46



Bu benim de anlayışım. R belgelerinde aşağıdaki herhangi bir argümanın "bir yerlerde" uyarısı vardır. ... kısaltılamaz. - Carl Witthoft
Belgelenmiştir bölüm 4.3.2 Bağımsız değişken eşleşmesi arasında R Dil Tanımı. - Joshua Ulrich
Yani hacker benim içimde. mypaste <-function(sep = " ", collapse = NULL,...) paste(sep,collapse,...)   :-) - Carl Witthoft


Bir sarmalayıcı işlevi, çok yardımcı olabilir 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)
}

Örneğin :

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


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

2
2017-12-05 18:47



Bu OP için kullanılabilir olsa da, ben gerçekten bu soruya cevap olduğunu düşünmüyorum niye ya Ari'nin cevabının yaptığı kısaltma işe yaramıyor ... - A5C1D2H2I1M1N2O1R2T1
@Carl, temizlik için teşekkürler. Ananda: Bence doğruluk konusunda haklısınız, yine de bu OP'ye yardımcı olabilir. Bence Ari nedenini harika bir iş yaptı. - Ricardo Saporta