我想在每次for
循环后,for
循环的输出存储为p
的名称,1:i
附加到p
例如,在for
循环的第1行,我希望for
循环的输出在运行2,p1
处命名为p2
,依此类推。因此,在i
运行后,我们将拥有p1, p2, ..., pi
个对象。
我想知道是否有可能实现这个目标?
( 注意: 我的最终目标是在{{}>中减去p1, p2, ..., pi
配对聪明 {1}}功能。)
prop
答案 0 :(得分:2)
这是你要找的人吗?
prop <- function(n, yes, a, b){
p <- list()
for(i in 1:length(n)){
p[[i]] <- rbeta(1e6, a[i] + yes[i], b[i] + (n[i] - yes[i]))
}
names(p) <- paste("p",n,sep = "")
return(p)
}
答案 1 :(得分:1)
assign
函数可用于为环境中的名称赋值。
<强>用法强>
assign(x, value, pos = -1, envir = as.environment(pos),
inherits = FALSE, immediate = TRUE)
可以用作:
prop <- function(n, shape1, shape2, ncp){
sol <- list()
for(i in 1:n){
p_var <- paste0("p", i)
x <- rbeta(n, shape1[i], shape2[i], ncp[i])
assign(p_var, x, envir = as.environment(.GlobalEnv))
sol[[p_var]] <- get(p_var)
}
sol
}
n=3;shape1=c(1,2,3);shape2=c(4,5,6);ncp=c(0.1,0.2,0.3)
现在prop
函数将返回命名列表以及创建对象p1
,p2
,p3
> out <- prop(n, shape1, shape2, ncp)
> out
$p1
[1] 0.33343059 0.01592913 0.08372019
$p2
[1] 0.2380992 0.1766112 0.1967696
$p3
[1] 0.27451031 0.23409990 0.06519348
> p1
[1] 0.33343059 0.01592913 0.08372019
> p2
[1] 0.2380992 0.1766112 0.1967696
> p3
[1] 0.27451031 0.23409990 0.06519348
希望我对你的问题的理解是清楚的。