2012-12-09 38 views
1

我正在嘗試在r中編寫一個for循環,循環使用1970年開始的數據。我想循環多年,以便我對數據每年進行一次迭代,並將數據(投票份額,在職狀態等)存儲在向量中。 很明顯,因爲我的數據是1970年開始的,所以我不想要年份爲< 1970的值,但是,下面的腳本正在生成一個矢量,其位置爲1-16,NA位於17-1969,然後我相信是在1970 - 2000年偶數年的統計數據以及奇數年的NA數據。我怎麼才能得到這個結果,只返回我想要的值(甚至是1970年至2000年?)並且1-16位的0值是怎麼回事?For循環r - 不能得到大於1的第一個值

incumb.data是具有投票份額,在職狀態,按年份和州選舉結果的數據框。

\腳本:

J<-seq(1970, 2000,2) 
inc.fx1<-vector(length=length(J)) 
year.df1<-vector(length=length(J)) 

for (j in 1970:J){ 
    state.hold<-incumb.data[StateNumb3==26,] 
    yr.hold<-state.hold[state.hold$V6==j,] 

    St28.df<-data.frame(year=yr.hold$V6, 
         v_1=yr.hold$v_1, v_2=yr.hold$v_2, 
         I1=yr.hold$I1, I2=yr.hold$I2, 
         P2=yr.hold$P2) 

    St28.lm<-lm(v_2~v_1+I2+P2, data=St28.df) 
    inc.fx1[j]<-coef(St28.lm)[3] 
    year.df1[j]<-St28.df$year 
} 

\結束腳本

所以我想inc.fx1舉行的甚至幾年1970-2000.Thanks計算統計的任何幫助。

BG

+0

R代表循環是在形式(在矢量計數器)等等;它恰好如此,1:100是創建向量的簡寫方式,而不是循環語法本身的基礎。 – RyanGrannell

回答

2

J是一個矢量,並且可以在其上直接進行迭代。

替換此(其應當給予警告):

for (j in 1970:J){ # ... 

利用該:

for (j in J){ # ...