R:在循环和否则,如果指定值 [英] R : assigning value in looping and else if
本文介绍了R:在循环和否则,如果指定值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这线程previously从<一个讨论href=\"http://stackoverflow.com/questions/36974450/r-loop-and-if-else?noredirect=1#comment61504739_36974450\">R循环和举例来说,如果其他。这里我给一个可重复code:
This thread was previously discussed from R loop and if else with example. here I give a reproducible code :
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
这有什么错呢?
推荐答案
Sui_Q1&LT; - 列表()
写入不止一次。这导致()的列表覆盖。该解决方案是唯一的
Sui_Q1&LT放; - 列表()
和 Sui_Q2&LT; -list()
循环前
Sui_Q1<- list()
is written more than once. it cause the list()
to override. The solution is only to put Sui_Q1<- list()
and Sui_Q2<-list()
before looping.
这篇关于R:在循环和否则,如果指定值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文