Sana sadece tek bir yerine argümanların bu liste diyebilirsin. Örneğin, noktaların her unsuru erişebilirsiniz:
f <- function(...) {
list(one = ..1,
three = ..3,
four = ..4,
two = ..2)
}
f(1, 2, 3, 4)
# $one
# [1] 1
#
# $three
# [1] 3
#
# $four
# [1] 4
#
# $two
# [1] 2
Ama ne gerçekten yapmak istediğiniz tek tek argüman olarak her pass. Yani bu durumda, açıkça (yazarak bir sürü) bunu veya fonksiyonlara parametre listesini geçmesine izin veren do.call
kullanmak için her ihtiyaç
cc <- c("", "a", "b", "c.txt")
do.call('file.path', as.list(cc))
# [1] "https://stackoverflow.com/a/b/c.txt"
file.path
yılında güzel sadece iki argüman, bir olduğunu bunların bu kadar bu durumda her argüman maç için işleve bir adlı listesini geçmesi gerekiyor değiştirmek ancak yaptığını eğer
do.call('file.path', c(as.list(cc), fsep = '/xx/'))
# [1] "/xx/a/xx/b/xx/c.txt"
yapabileceğini gerekmez
rastlamak Bir yan not, belirli bir pakette bir işlevi belirtmek gerekirse çalışmaz
do.call('base::mean', list(1:4))
# Error in do.call("base::mean", list(1:4)) :
# could not find function "base::mean"
gibi bir şey. Sen
f <- base:::mean; do.call('f', list(1:4))
# [1] 2.5
yoksa Rawr kabul ettiği cevabı/yorum olarak aynı göndermek üzereyken
do.call(base::mean, list(1:4))
# [1] 2.5
'do.call ('file.path', as.list (cc)) ben file.path kullanmak' – rawr