我需要在循环中检索函数返回的列表元素,并使用这些列表元素
创建矩阵功能:
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的新手我无法找到最好的方法吗
答案 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]
}}