0
我经常写这样的代码:创建一个行数据帧,每一个栏是与现有的变量
answer.df = data.frame(x = numeric(0), y = numeric(0), z = numeric(0))
for (i in 1:100) {
x = do_stuff(i)
y = do_more_stuff(i)
z = yet_more_stuff(i)
# Is there a better way of doing this:
temp.df = data.frame(x = x, y = y, z = z)
answer.df = rbind(answer.df, temp.df)
}
我的问题是,在该行temp.df = data.frame(x = x, y = y, z = z)
,有没有这样做的一个更合适的方法这个?想象一下,用十个或更多变量来理解我的问题。
没有直接回答你的问题,但是,往往存在(几乎总是)一更好的方式来创建data.frame,而不是'rbind'内部的'for'循环 – SymbolixAU
Better * how *?你不需要为数据框命名参数 - 只要你想要相同的名字,你可以只做'data.frame(x,y,z)'。如果x,y,z在列表中,而不是单独的变量,那么可以使用'as.data.frame'。但是那条线看起来很好,真的。这是'rbind'这条线看起来很糟糕:像这样的循环内的成长对象是[地狱中的第二圈地狱](http://www.burns-stat.com/pages/Tutor/R_inferno.pdf) 。预先分配您的'answer.df'并直接插入到该列表中,或者将列表中的向量保留在列表中,并在末尾将其转换为数据框。 – Gregor
@SymbolixAU我只是在学习。婴儿的步骤。 – lebelinoz