在 R 的循环结构中有一个函数输出两个量?
Having a function output two quantities in looping structure in R?
在我下面的 R 函数中,我想知道如何更改我的代码,以便我可以从我的 fun
函数中得到 pe
?现在,fun
只输出 L
和 U
.
P.S. 当然,我想保持功能像现在一样工作,因此 replicate
可能还需要更改为除了 L
和 U
.
之外,还有 fun
输出 pe
的结果
CI.bi = function(n, p, n.sim){
fun <- function(n1 = n, p1 = p){
x <- rbinom(1, size = n1, prob = p1)
pe <- x/n1
res <- binom.test(x, n1, p1)[[4]]
c(L = res[1], U = res[2])
}
sim <- t(replicate(n.sim, fun()))
y = unlist(lapply(1:n.sim, function(x) c(x, x)))
plot(sim, y, ty = "n", ylab = NA, yaxt = "n")
segments(sim[ ,1], 1:n.sim, sim[ ,2], 1:n.sim, lend = 1)
}
# Example of use:
CI.bi(n = 15, p = .5, n.sim = 3)
您可以将 fun()
return pe
作为 return 向量的附加元素。
稍后引用 sim
时,只需指定要使用的列。我相信下面的代码示例复制了您当前的功能,但将 pe
作为 fun()
的附加输出
CI.bi = function(n, p, n.sim){
fun <- function(n1 = n, p1 = p){
x <- rbinom(1, size = n1, prob = p1)
pe <- x/n1
res <- binom.test(x, n1, p1)[[4]]
c(L = res[1], U = res[2], pe=pe)
}
sim <- t(replicate(n.sim, fun()))
y = unlist(lapply(1:n.sim, function(x) c(x, x)))
plot(sim[,1:2], y, ty = "n", ylab = NA, yaxt = "n")
segments(sim[ ,1], 1:n.sim, sim[ ,2], 1:n.sim, lend = 1)
}
CI.bi(n = 15, p = .5, n.sim = 3)
在我下面的 R 函数中,我想知道如何更改我的代码,以便我可以从我的 fun
函数中得到 pe
?现在,fun
只输出 L
和 U
.
P.S. 当然,我想保持功能像现在一样工作,因此 replicate
可能还需要更改为除了 L
和 U
.
fun
输出 pe
的结果
CI.bi = function(n, p, n.sim){
fun <- function(n1 = n, p1 = p){
x <- rbinom(1, size = n1, prob = p1)
pe <- x/n1
res <- binom.test(x, n1, p1)[[4]]
c(L = res[1], U = res[2])
}
sim <- t(replicate(n.sim, fun()))
y = unlist(lapply(1:n.sim, function(x) c(x, x)))
plot(sim, y, ty = "n", ylab = NA, yaxt = "n")
segments(sim[ ,1], 1:n.sim, sim[ ,2], 1:n.sim, lend = 1)
}
# Example of use:
CI.bi(n = 15, p = .5, n.sim = 3)
您可以将 fun()
return pe
作为 return 向量的附加元素。
稍后引用 sim
时,只需指定要使用的列。我相信下面的代码示例复制了您当前的功能,但将 pe
作为 fun()
CI.bi = function(n, p, n.sim){
fun <- function(n1 = n, p1 = p){
x <- rbinom(1, size = n1, prob = p1)
pe <- x/n1
res <- binom.test(x, n1, p1)[[4]]
c(L = res[1], U = res[2], pe=pe)
}
sim <- t(replicate(n.sim, fun()))
y = unlist(lapply(1:n.sim, function(x) c(x, x)))
plot(sim[,1:2], y, ty = "n", ylab = NA, yaxt = "n")
segments(sim[ ,1], 1:n.sim, sim[ ,2], 1:n.sim, lend = 1)
}
CI.bi(n = 15, p = .5, n.sim = 3)