【问题标题】:How to extract values from for loop如何从for循环中提取值
【发布时间】:2018-03-05 18:22:40
【问题描述】:

我的代码如下。该代码不止一次产生g 值,例如g1g2 等。我想要做的是从循环中提取这些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))

}

【问题讨论】:

    标签: r loops extract


    【解决方案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))
    }
    

    `

    【讨论】:

      【解决方案2】:

      您可以使用迭代函数,例如来自 purrr 的函数,而不是原始的 for 循环。这里使用map2 迭代tnsindeg

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

      【讨论】:

        猜你喜欢
        • 2020-05-16
        • 1970-01-01
        • 2017-09-17
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 2022-10-21
        • 2019-02-28
        • 2023-03-10
        相关资源
        最近更新 更多