如何从 for 循环中提取值
How to extract values from for loop
我的代码如下。该代码不止一次产生 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))
}
如果我理解你的意思,你可以将当前 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))
}
`
您可以使用迭代函数,例如 purrr
中的函数,而不是原始的 for 循环。这里使用 map2
迭代 tn
和 sindeg
library(purrr)
gs <- map2( tn, sindeg, function(atn, m) {
runif(atn, m, m + h )
})
我的代码如下。该代码不止一次产生 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))
}
如果我理解你的意思,你可以将当前 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))
}
`
您可以使用迭代函数,例如 purrr
中的函数,而不是原始的 for 循环。这里使用 map2
迭代 tn
和 sindeg
library(purrr)
gs <- map2( tn, sindeg, function(atn, m) {
runif(atn, m, m + h )
})