运行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数。感谢指导,伙计们。
答案 0 :(得分:1)
您正在将矢量化处理与索引混合。在第一个示例中,您将(长度.....)中的一个数字分配给所有测试元素,覆盖每个周期的数字。仅打印最后一个作业。
类似的东西:
test = rep(NA,length(new))
for (i in new)
test[i] = your number
会奏效。正如保罗所提到的那样,代码并不是很简单,但由于你没有提供msales,我不能给你一个更好的例子。