2017-09-24 87 views
0

我的代碼如下。該代碼多次產生g值,比如g1,g2等。我想要做的是從循環中提取這些g值並將其用於循環外。任何想法如何做?如何從循環中提取值

I<-1   
S<-10  
h<-1   
lmd<-1  
v<-2    
n<-100 

A=as.integer((S-I)/h)  

U=A+1   

Sha=(A*h)+I  

sindeg=seq(from = I, to =Sha, length.out =U)  

D=((lmd)^v)*(((sindeg)^(-v))-((sindeg+h)^(-v)))  

tn=(as.integer(n*D))       

for(i in 1:A){ 
print(paste(tn[i])) 


atn=tn[i] 
k=sindeg[i]+h 
m=sindeg[i] 
print(paste("alt",m)) 
print(paste("üst",k)) 

g=runif(atn, m, k) 

print(paste(g)) 

} 

回答

1

如果我明白你的意思,你可以把當前的g值到外部(與循環)列表,例如這裏extg:

I<-1   
S<-10  
h<-1   
lmd<-1  
v<-2    
n<-100 

A=as.integer((S-I)/h)  

U=A+1   

Sha=(A*h)+I  

sindeg=seq(from = I, to =Sha, length.out =U)  

D=((lmd)^v)*(((sindeg)^(-v))-((sindeg+h)^(-v)))  

tn=(as.integer(n*D))       

extg = list() 

for(i in 1:A) 
{ 
    print(paste(tn[i])) 


    atn=tn[i] 
    k=sindeg[i]+h 
    m=sindeg[i] 
    print(paste("alt",m)) 
    print(paste("üst",k)) 

` g=runif(atn, m, k) 

    extg[[i]] = g 

    print(paste(g)) 
} 

`

+0

完美的作品。非常感謝 –

1

你可以使用迭代函數,如purrr中的函數,而不是raw for循環。這裏使用map2,反覆tnsindeg

library(purrr) 
gs <- map2(tn, sindeg, function(atn, m) { 
    runif(atn, m, m + h) 
})