Во многих функциях R аргумент ...
используется для предоставления нескольких объектов. Как я могу указать объект list
в аргументе ...
?
Например:
x1 <- head(iris)
x2 <- tail(iris)
rbind(x1, x2)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa
#145 6.7 3.3 5.7 2.5 virginica
#146 6.7 3.0 5.2 2.3 virginica
#147 6.3 2.5 5.0 1.9 virginica
#148 6.5 3.0 5.2 2.0 virginica
#149 6.2 3.4 5.4 2.3 virginica
#150 5.9 3.0 5.1 1.8 virginica
Но предположим, что у меня есть кадры данных x1
и x2
в файле list
. Как я могу использовать этот list
с аргументом ...
в rbind
?
Я уже пробовал следующее, но безуспешно:
rbind(list(x1, x2))
rbind(substitute(list(x1, x2))[-1])
rbind(unlist(list(x1, x2)))
В каждом из этих случаев результат НЕ такой, как из rbind(x1, x2)
. Что мне не хватает?
ОБНОВЛЕНИЕ 1:
Как указано в ответах, do.call(rbind, list(x1, x2))
в этом случае отлично работает. Однако мне интересно, можно ли избежать do.call
техники. Другими словами, можно ли преобразовать list(x1, x2)
так, чтобы ...
его правильно понял?
do.call
— потрясающая функция, и я уверен, что вы задели ее чувства, когда сказали, что хотите избежать ее без уважительной причины. Я также не понимаю, почему вы думаете, чтоrbind(list)
сработает. Как вы сказали,rbind
берет несколько объектов в...
. список является одним объектом. - person rawr   schedule 13.02.2014list
, то это набор из нескольких объектов. Я надеялся, что трюк, подобныйunlist(list)
, автоматически передаст несколько внедренных объектов вrbind()
. - person landroni   schedule 14.02.2014