2017-09-24 40 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) 
})