在 R 的循环结构中有一个函数输出两个量?

Having a function output two quantities in looping structure in R?

在我下面的 R 函数中,我想知道如何更改我的代码,以便我可以从我的 fun 函数中得到 pe?现在,fun 只输出 LU.

P.S. 当然,我想保持功能像现在一样工作,因此 replicate 可能还需要更改为除了 LU.

之外,还有 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)