检索循环中函数返回的列表元素

时间:2016-03-20 07:04:47

标签: r list function

我需要在循环中检索函数返回的列表元素,并使用这些列表元素

创建矩阵

功能:

function(med, days){
     i <- 0
     cnt = 1
     lCnt = 1
     value <- 0
     fx <- 0
     t <- 0
     flag <- 0
     daysList <- NULL
     valuesList <- NULL
     for(i in days){
         lambda = ((0.693)/(med*30.475))
         fx[cnt] <- c(1 - exp(-lambda*(i*7)))
         if(cnt == 1){
             prob = rbinom(1,1,fx[cnt])
         }else{
             t[cnt] <- ((fx[cnt]-fx[cnt - 1])/(1-fx[cnt-1]))
             prob = rbinom(1,1,t[cnt])
         }
         if(cnt == 1){
             tmp = days[cnt]
         }else{
             tmp = days[cnt] - days[cnt -1]   
         }
         if(prob == 0 && flag == 0){
             value = value + tmp
             valuesList[lCnt] <- prob
         }else{
             if(flag == 0){
                 value = value + tmp
                 valuesList[lCnt] <- prob
                 flag <- 1
             }else{
                 valuesList[lCnt] <- 'E'       
             }
         } 
         daysList[lCnt] <- days[cnt]
         lCnt = lCnt + 1
         if(flag == 0){
             cnt = cnt + 1   
         }
     }
     ret <- list('rDays' = daysList,'rValues' = valuesList)
     return(ret)
 }

现在我想为不同的输入重复这个功能,所以我用循环如下:

for(i in 1:300){
   days1=c(rnorm(8,mean=56,sd=3))
   days=cumsum(days1)
   res[i] <- getMedData (med,days)
 }

最后,我想要两个矩阵,一个包含rDays由函数返回,另一个包含rValues

任何人都可以帮助我以这种格式创建矩阵,因为我是R的新手我无法找到最好的方法吗

1 个答案:

答案 0 :(得分:0)

终于找到了方向 书面循环调用函数如下(我不知道这是否正确但它对我有用:p)

for(i in 1:300){
days1=c(rnorm(8,mean=56,sd=3))
days=cumsum(days1)
a <- getMedData (med,days)
for(j in 1:length(days)){
    resVal[i,j] = a[[1]][j]
    resProb[i,j] = a[[2]][j]
}}