有没有可能在R中用'for'循环'sapply'呢?

有没有可能在R中用'for'循环'sapply'呢?,r,function,for-loop,optimization,sapply,R,Function,For Loop,Optimization,Sapply,我想知道为什么我的对象CI不能正确返回以下函数中for()循环的完整(11个成对答案)输出?相反,CI返回11个单个数字 N = 30 ; df = 118 ; d = 1 f <- function (ncp, alpha, q, df) { abs(suppressWarnings(pt(q = d*sqrt(N), df = df, ncp, lower.tail = FALSE)) - alpha) } a = mapply(c, as.list(20:

我想知道为什么我的对象
CI
不能正确返回以下函数中
for()
循环的完整(11个成对答案)输出?相反,
CI
返回11个单个数字

N = 30 ; df = 118 ; d = 1

f <- function (ncp, alpha, q, df) {
 abs(suppressWarnings(pt(q = d*sqrt(N), df = df, ncp, lower.tail = FALSE)) - 
   alpha)
      }

 a = mapply(c, as.list(20:30), as.list(-20:-30), SIMPLIFY = FALSE) # a list of paired values

 CI <- numeric(length(a))

 for(i in 1:length(a)){

CI[i] = sapply(c(0.025, 0.975),
         function(x) optimize(f, interval = a[[i]], alpha = x, q = d*sqrt(N), df = df, tol = 1e-10)[[1]])

    }  

CI # just returns one paired of the 11 paired answers expected!
N=30;df=118;d=1
怎么样

N = 30 ; df = 118 ; d = 1

f <- function (ncp, alpha, q, df) {
  abs(suppressWarnings(pt(q = d*sqrt(N), df = df, ncp, lower.tail = FALSE)) - 
        alpha)
}

a = mapply(c, as.list(20:30), as.list(-20:-30), SIMPLIFY = FALSE) # a list of paired values

CI <- matrix(NA, 11,2)

for(i in 1:length(a)){

  CI[i,] = sapply(c(0.025, 0.975),
              function(x) optimize(f, interval = a[[i]], alpha = x, q = d*sqrt(N), df = df, tol = 1e-10)[[1]])

}  

CI
N=30;df=118;d=1

f谢谢,当我在等待系统允许我接受你的答案时,有一个问题,我如何才能在11行中找到最常出现的答案(行)?@Rnoruzian,答案并不完全相同。见CI[4,]==CI[5]。因此,您可能需要对其进行四舍五入,例如库(dplyr);总结(分组依据(如数据帧(圆形(CI,4)),V1,V2),长度(V2))