【问题标题】:Append the result of calculation to data frame in loop将计算结果追加到循环数据框中
【发布时间】:2015-07-11 02:39:04
【问题描述】:

我正在尝试对我的模拟周期中包含的每个日期进行计算,并将每一天的结果保存在数据框中。

这就是我所做的:

SimulPeriod<- subset(HistoriqueNew, HistoriqueNew$Timestamp> DateIni)

  p.and.l <- data.frame("13/3/2014",0)
  names(p.and.l)<-c("DatePL", "PL")
  p.and.l$DatePL<-as.Date(p.and.l$DatePL, "%d-%m/%Y")

  for (p.and.l.date in SimulPeriod$Timestamp) {

    ## simulates closure of the position each day ##

    CompteCourantUSD<-CompteCourantUSDIni+Achetes*SimulPeriod$Trade.Close.y
    CompteCourantGBP<-CompteCourantGBPIni-Vendus*SimulPeriod$Trade.Close.x/100
    ResultatJour <- CompteCourantUSD/SimulPeriod$Bid.Close+CompteCourantGBP

    p.and.l$DatePL <- rbind(p.and.l$DatePL, p.and.l.date)
    p.and.l$PL <- rbind(p.and.l$PL, ResultatJour))
    }

我在控制台中收到以下消息:

Error: unexpected ')' in:
"    p.and.l$DatePL <- rbind(p.and.l$DatePL, p.and.l.date)
    p.and.l$PL <- rbind(p.and.l$PL, ResultatJour))"
     }
Error: unexpected '}' in "    }"

【问题讨论】:

  • 奇怪的是,我看到变量 ResultatJour 是一个有 279 个值的向量,而不是一个值(如我所料,循环内的那一天。
  • 看来,即使没有 cbinding,ResultatJour 向量也始终拥有我想要的每日结果系列...
  • 在循环中增长对象是您可以在 R 中执行的最慢操作之一。您知道对象最终需要多大。将其预先分配到该大小。

标签: r loops dataframe append


【解决方案1】:

你有两个括号:

p.and.l$PL &lt;- rbind(p.and.l$PL, ResultatJour))

只需将其替换为:

p.and.l$PL &lt;- rbind(p.and.l$PL, ResultatJour)

【讨论】:

  • 你是对的。对不起,我是初学者。但现在我收到这条消息:$&lt;-.data.frame(*tmp*, "DatePL", value = c(NA, 16143)) 中的错误:替换有 2 行,数据有 1
  • 我意识到,实际上,我什至不需要循环,也不需要附加我的数据框。通过矢量计算,我立即得到可以绑定到初始数据的结果列
猜你喜欢
  • 2012-10-05
  • 2019-09-21
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2020-03-22
  • 2016-08-18
相关资源
最近更新 更多