Table 在单元格中有间隔

Table with intervals in cells

我正在尝试将统计数据的一些置信区间放入 table,但是这个结构对我来说很棘手。我希望它看起来像这样

Level Percentile Student's
95% [p1, p2] [t1, t2]

其中 p1、p2 和 t1、t2 是部分使用 quantile 函数计算的数字。 示例代码,我刚刚生成了一些用于计算的随机数。

    set.seed(42) #Arbitrary random seed
    alk <- rexp(800,rate=1) #some random numbers
    
    N <- 10^4
    #Reserving space
    Tstar <- numeric(N)
    xbarstar <- numeric(N)
    
    xbar <- mean(alk)
    n <- length(alk)
    
    for (i in 1:N)
    {
      bootsamp <- sample(alk,size=n,replace=T)
      Tstar[i] <- (mean(bootsamp) - xbar)/(sd(bootsamp)/sqrt(n)) #for t-confidence
      xbarstar[i] <- mean(bootsamp) #For the bootstrap percentile calc.
    }
    
    alpha<-0.05
    #bootstrap t Confidence interval
    boot.t <-xbar - quantile(Tstar,c(1-alpha/2,alpha/2))*sd(alk)/sqrt(n)
    #bootstrap percentile
    boot.p <- quantile(xbarstar,c(alpha/2,1-alpha/2))
    
    nams<-c("level","percentile","student")
    A <- matrix(data=nams,nrow=1,ncol=3)
    A <- rbind(A,c("95%","[1.004, 1.1536]","[1.00131, 1.148672]"))
    print(A)

当然,这很糟糕,因为我手动输入了间隔值,但这只是为了让您了解我想要什么 - 我知道使用矩阵可能也不是正确的方法。 特别是,我对如何将 [1.004, 1.1536] 放入单个单元格感到困惑。我知道我可以通过使用 boot.t[[1]]boot.t[[2]] 分别引用这两个数字,或者通过使用 unname(boot.t) 将它们作为向量同时获取 - 但这对我没有帮助如上所述,将它们排列成一个单元格。 此外,打印矩阵或做 as.table(A) 会给出 [1]、[2]、[3] 中令人讨厌的 headers 或 A、B、C 对于 columns/rows 我不知道的我不想。

P.s。这里的数学并不是很重要,我只需要帮助将结果安排在一个漂亮的表格中。

您可以使用 sprintftoString 来格式化 table。

A <- data.frame(level = '95%', 
                Percentile = sprintf('[%s]', toString(round(boot.t, 3))), 
                 Student = sprintf('[%s]', toString(round(boot.p, 3))))
A

#  level     Percentile        Student
#1   95% [1.004, 1.154] [1.001, 1.149]