2014-02-13 4 views
0

for 루프를 실행 한 후 데이터 프레임에 할당하는 데 문제가 있습니다. 인쇄물을 사용하면 내 가치관이나 설명이 달라집니다.루프 내 R 데이터 프레임에 할당하기

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

달성하려는 내용을 설명해 주시겠습니까? 'for' 루프를 사용하는 것보다 더 간단한 대안이 종종 있습니다. –

+1

질문 [** reproducible **] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610)을 작성하십시오. 즉, 더미 데이터 - 그것은 당신을 도울 수있게 해줍니다. 건배. – Henrik

답변

1

인덱싱 된 벡터화 처리를 혼합합니다. 첫 번째 예에서는 test의 모든 요소에 (길이 .....)의 한 숫자를 할당하여 각주기의 숫자를 덮어 씁니다. 마지막 과제 만 인쇄됩니다. 같은

뭔가 :

test = rep(NA,length(new)) 

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

가 작동합니다. Paul이 언급했듯이이 코드는 R-ish는 아니지만 msales를 제공하지 않았기 때문에 더 좋은 예를들 수 없습니다.

관련 문제