【发布时间】:2021-07-21 12:43:16
【问题描述】:
我想用特定的列构造一个空的 df 并创建一个循环,在每次迭代中添加一行
type <- c("AAA","BBB","CCC")
price <-c(0.5, 0.7, 0.2)
fixed_cost1<- 500
fixed_cost <- 200
Quantity<-c(400,700)
Month <-c(1,2,3)
df<-as.data.frame(matrix(,ncol=6,nrow=0))
我想创建一个生成下面数据框的 for 循环。我想计算 3 个月内每种“类型”和不同“数量”的总成本。总成本的计算是 (price[i]*Quantity[i]+fixed_cost1+ fixed_cost2)* Month[i] 。最终的df 将非常大,因为必须对每种类型进行总成本计算,数量为 400 的所有月份,数量 700 的所有月份都相同。谢谢您的时间
| type | price | fixed_cost1 | fixed_cost2 | Month | Quantity | Total_Cost |
|---|---|---|---|---|---|---|
| AAA | 0.5 | 500 | 200 | 1 | 400 | 900 |
| AAA | 0.5 | 500 | 200 | 2 | 400 | 1800 |
| AAA | 0.5 | 500 | 200 | 3 | 400 | 2700 |
| AAA | 0.5 | 500 | 200 | 1 | 700 | 1050 |
| AAA | 0.5 | 500 | 200 | 2 | 700 | 2100 |
| AAA | 0.5 | 500 | 200 | 3 | 700 | 3150 |
| BBB | 0.7 | 500 | 200 | 1 | 400 | 980 |
| ---- | --- | --- | --- | -- | --- | ---- |
| BBB | 0.7 | 500 | 200 | 3 | 700 | 1190 |
【问题讨论】:
-
在我查看您的预期输出之前,请意识到迭代地向帧添加行的缩放比例很差;如果您有兴趣,请阅读The R Inferno 中的“Circle 2:Growing Objects”。长话短说,添加的每一行都会复制整个帧,因此添加的行越多,它在内存中的空间(以及复制它的时间)是通常应该是帧的两倍。有选项,取决于用途...