Во многих 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)
. Что мне не хватает?
Update1:
Как было предложено в ответах, do.call(rbind, list(x1, x2))
, кажется, прекрасно работают в этом случае. Тем не менее, мне интересно, можно ли избежать использования оборудования do.call
. Другими словами, можно ли конвертировать list(x1, x2)
так, что ...
понимает его правильно?
Почти дубликат: http://stackoverflow.com/q/6192138/324364 – joran
' do.call' - потрясающая функция, и я уверен, что вы повредили ее чувства, когда говорите, что хотите избежать этого без уважительной причины. Я также не понимаю, почему вы думаете, что 'rbind (list)' будет работать. Как вы говорите, 'rbind' принимает несколько объектов в' ... '. список - это один объект. – rawr
@rawr Никакое преступление не предназначалось. :) Что касается 'list', это набор из нескольких объектов. Я надеялся, что трюк, похожий на 'unlist (list)', автоматически перенесет несколько встроенных объектов в 'rbind()'. – landroni