rbind data.frame выводит из цикла

Я хочу связать цикл, который генерирует data.frames. Вот [неправильный] цикл общей идеи, которую я ищу.

for (i in 1:2){
a <- c(2, (i+10))
b <- c((i+10)), 5))
c[i] <- data.frame(a,b)
}
rbind(c)

Я хочу такой вывод:

2  11
11  5
2  12
12  5

Этот вопрос задавался раньше, но ответ был прямым решением без объяснения причин. Я не знаю, как это читать. В нем участвовали do.call и mget.


person Andrew    schedule 24.03.2015    source источник
comment
Тогда я бы сказал, что этот вопрос является обманом. Если вы не понимаете методы языка, вам нужно прочитать документацию.   -  person Mathemats    schedule 25.03.2015
comment
Я уже прочитал файл справки. Я до сих пор этого не понимаю. Предыдущий вопрос не предоставил воспроизводимый код. Как я могу тогда получить помощь?   -  person Andrew    schedule 25.03.2015
comment
может быть, это более полезно? do.call полезен, потому что вы можете выполнить функцию по имени и передать список параметров. например, если вы хотите связать кучу фреймов данных, которые у вас есть в списке, вы можете сделать do.call('rbind', mylistofdataframes), где, надеюсь, список был легко создан с помощью lapply или аналогичного. в качестве другого примера, rbind(mtcars, mtcars, mtcars) и do.call('rbind', list(mtcars, mtcars, mtcars)) эквивалентны   -  person rawr    schedule 25.03.2015
comment
формулировку вашего вопроса немного сложно понять, не могли бы вы откатить один и сказать нам, какова цель? какая-то конкретная необходимость использовать rbind() или генерировать data.frame?   -  person roman    schedule 25.03.2015
comment
@user3115675 user3115675 Ваш ответ именно то, что я искал. Спасибо вам за помощь.   -  person Andrew    schedule 25.03.2015
comment
Обратите внимание, что это медленный способ сделать это. Быстрее предварительно выделить: г">stackoverflow.com/questions/2908822/   -  person Ari B. Friedman    schedule 25.03.2015


Ответы (1)


Вам не нужно использовать do.call для этого. Просто измените цикл, как показано ниже:

out=NULL
for (i in 1:2){
a <- c(2, (i+10))
b <- c((i+10), 5)
c <- data.frame(a,b)
out=rbind(out,c)
}
out
#  a  b
#  2 11
# 11  5
#  2 12
# 12  5

Примечание. У вас было много лишних скобок для объекта b. Что я и вынул.

person User7598    schedule 24.03.2015