对于R中的循环分配给数据帧

时间:2014-02-13 09:32:07

标签: r for-loop

运行for循环后,我无法分配数据帧。当我使用打印时,它给出了我的价值,给它任何解释吗?

 salesdate<-rep(seq(from=as.Date("2013-12-19"),to=as.Date("2013-12-23"),by=1),100)
 memberid<-as.factor(sample(1:1000,500))
 msales<-data.frame(salesdate,memberid)

 new<-seq(from=as.Date("2013-12-19"),to=as.Date("2013-12-23"),by=1)
 for(i in new) 
+   print(length(unique(msales[(msales$salesdate>="2013-12-23" | msales$salesdate>=i),]$memberid)))
[1] 500
[1] 400
[1] 300
[1] 200
[1] 100

 test <- rep(NA,length(new))
 new<-seq(from=as.Date("2013-12-19"),to=as.Date("2013-12-23"),by=1)
 for(i in new) 
+   test[1:5]<-length(unique(msales[(msales$salesdate>="2013-12-23" | msales$salesdate>=i),]$memberid))
> test
[1] 100 100 100 100 100

我创建了一些样本。我的目标是从当前日期开始计算每个日期的唯一ID数。感谢指导,伙计们。

1 个答案:

答案 0 :(得分:1)

您正在将矢量化处理与索引混合。在第一个示例中,您将(长度.....)中的一个数字分配给所有测试元素,覆盖每个周期的数字。仅打印最后一个作业。

类似的东西:

test = rep(NA,length(new))

for (i in new)
  test[i] = your number

会奏效。正如保罗所提到的那样,代码并不是很简单,但由于你没有提供msales,我不能给你一个更好的例子。