【问题标题】:Having a function output two quantities in looping structure in R?有一个函数在R中的循环结构中输出两个量?
【发布时间】:2018-01-17 15:04:23
【问题描述】:

在下面的 R 函数中,我想知道如何更改我的代码,以便我可以从 fun 函数中获取 pe?目前,fun 只输出LU

PS当然,我想保持该功能像现在一样工作,因此replicate可能也需要更改,因为fun输出pe除了LU

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)

【问题讨论】:

    标签: r function for-loop sapply replicate


    【解决方案1】:

    您可以将fun() 返回pe 作为返回向量的附加元素。

    稍后引用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多