2016-05-02 7 views
-4

このスレッドは前にR loop and if elseを例に説明しました。ここで私は、再現コード与える:R:ループで値を代入する場合

n = 4 
a=0 
b=0 
c=0 
d=0 
e=0 
f=0 
g=0 
h=0 

Sui_Q1_STS<-0 
Sui_Q1_TS<-0 
Sui_Q1_S<-0 
Sui_Q1_SS<-0 
Sui_Q2_STS<-0 
Sui_Q2_TS<-0 
Sui_Q2_S<-0 
Sui_Q2_SS<-0 
for (i in 1:n){ 

if(i%%4==1) 
{ 
    a<-1 
    b<-2 
    c<-3 
    d<-4 
    e<-5 
    f<-6 
    g<-7 
    h<-8 
    Sui_Q1_STS[i]<-as.numeric(a) 
    Sui_Q1_TS[i]<-as.numeric(b) 
    Sui_Q1_S[i]<-as.numeric(c) 
    Sui_Q1_SS[i]<-as.numeric(d) 
    Sui_Q2_STS[i]<-as.numeric(e) 
    Sui_Q2_TS[i]<-as.numeric(f) 
    Sui_Q2_S[i]<-as.numeric(g) 
    Sui_Q2_SS[i]<-as.numeric(h) 


Sui_Q1<-list() 
Sui_Q1[[i]]<-cbind(Sui_Q1_STS[i],Sui_Q1_TS[i],Sui_Q1_S[i],Sui_Q1_SS[i]) 
Sui_Q2<-list() 
Sui_Q2[[i]]<-cbind(Sui_Q2_STS[i],Sui_Q2_TS[i],Sui_Q2_S[i],Sui_Q2_SS[i]) 
Total[i]<-Sui_Q1[[i]][,1]+Sui_Q1[[i]][,2]+Sui_Q1[[i]][,3]+Sui_Q1[[i]][,4] 
} 
else if(i%%4==2){ 

a<-11 
b<-22 
c<-33 
d<-44 
e<-55 
f<-66 
g<-77 
h<-88 

Sui_Q1_STS[i]<-as.numeric(a) 
Sui_Q1_TS[i]<-as.numeric(b) 
Sui_Q1_S[i]<-as.numeric(c) 
Sui_Q1_SS[i]<-as.numeric(d) 
Sui_Q2_STS[i]<-as.numeric(e) 
Sui_Q2_TS[i]<-as.numeric(f) 
Sui_Q2_S[i]<-as.numeric(g) 
Sui_Q2_SS[i]<-as.numeric(h) 


Sui_Q1<-list() 
Sui_Q1[[i]]<-cbind(Sui_Q1_STS[i],Sui_Q1_TS[i],Sui_Q1_S[i],Sui_Q1_SS[i]) 
Sui_Q2<-list() 
Sui_Q2[[i]]<-cbind(Sui_Q2_STS[i],Sui_Q2_TS[i],Sui_Q2_S[i],Sui_Q2_SS[i]) 
Total[i]<-Sui_Q1[[i]][,1]+Sui_Q1[[i]][,2]+Sui_Q1[[i]][,3]+Sui_Q1[[i]][,4] 
} 
else if(i%%4==3){ 

a<-111 
b<-222 
c<-333 
d<-444 
e<-555 
f<-666 
g<-777 
h<-888 

Sui_Q1_STS[i]<-as.numeric(a) 
Sui_Q1_TS[i]<-as.numeric(b) 
Sui_Q1_S[i]<-as.numeric(c) 
Sui_Q1_SS[i]<-as.numeric(d) 
Sui_Q2_STS[i]<-as.numeric(e) 
Sui_Q2_TS[i]<-as.numeric(f) 
Sui_Q2_S[i]<-as.numeric(g) 
Sui_Q2_SS[i]<-as.numeric(h) 


Sui_Q1<-list() 
Sui_Q1[[i]]<-cbind(Sui_Q1_STS[i],Sui_Q1_TS[i],Sui_Q1_S[i],Sui_Q1_SS[i]) 
Sui_Q2<-list() 
Sui_Q2[[i]]<-cbind(Sui_Q2_STS[i],Sui_Q2_TS[i],Sui_Q2_S[i],Sui_Q2_SS[i]) 
Total[i]<-Sui_Q1[[i]][,1]+Sui_Q1[[i]][,2]+Sui_Q1[[i]][,3]+Sui_Q1[[i]][,4] 
} 
else if(i%%4==0){ 

a<-1111 
b<-2222 
c<-3333 
d<-4444 
e<-5555 
f<-6666 
g<-7777 
h<-8888 

Sui_Q1_STS[i]<-as.numeric(a) 
Sui_Q1_TS[i]<-as.numeric(b) 
Sui_Q1_S[i]<-as.numeric(c) 
Sui_Q1_SS[i]<-as.numeric(d) 
Sui_Q2_STS[i]<-as.numeric(e) 
Sui_Q2_TS[i]<-as.numeric(f) 
Sui_Q2_S[i]<-as.numeric(g) 
Sui_Q2_SS[i]<-as.numeric(h) 


Sui_Q1<-list() 
Sui_Q1[[i]]<-cbind(Sui_Q1_STS[i],Sui_Q1_TS[i],Sui_Q1_S[i],Sui_Q1_SS[i]) 
Sui_Q2<-list() 
Sui_Q2[[i]]<-cbind(Sui_Q2_STS[i],Sui_Q2_TS[i],Sui_Q2_S[i],Sui_Q2_SS[i]) 
Total[i]<-Sui_Q1[[i]][,1]+Sui_Q1[[i]][,2]+Sui_Q1[[i]][,3]+Sui_Q1[[i]][,4] 

} }

を、私は今の結果を得る:

> Sui_Q1 
[[1]] 
NULL 

[[2]] 
NULL 

[[3]] 
NULL 

[[4]] 
    [,1] [,2] [,3] [,4] 
[1,] 1111 2222 3333 4444 

は私が得ることを期待:

> Sui_Q1 
[[1]] 
    [,1] [,2] [,3] [,4] 
[1,] 1 2 3 4 

[[2]] 
    [,1] [,2] [,3] [,4] 
[1,] 11 22 33 44 

[[3]] 
    [,1] [,2] [,3] [,4] 
[1,] 111 222 333 444 

[[4]] 
    [,1] [,2] [,3] [,4] 
[1,] 1111 2222 3333 4444 

これで何が悪いです?

答えて

1

Sui_Q1<- list()は複数回書き込まれます。 list()が上書きされます。解決策はループの前にSui_Q1<- list()Sui_Q2<-list()を入れることだけです。

関連する問題