You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中为统计区间设置方括号与圆括号格式

解决方案

要生成[161,168)、[182,189]这类带括号的区间格式,只需修改生成区间文本的limites函数,根据区间位置切换括号类型:前几个区间用左闭右开格式,最后一个区间用闭区间格式。

修改后的完整代码

library(grid)
library(gridExtra) 

LI <- sample(155:165, 1) 
a <- sample(5:10, 1) 
lim <- seq(from = LI, by = a, length = 5)

# 重写limites函数,生成目标区间格式
limites <- function(m){
  v <- character(m) # 预先分配向量,比循环拼接更高效
  for (i in 1:m){
    if (i < m) {
      # 非最后一个区间:左闭右开
      v[i] <- paste0("[", lim[i], ", ", lim[i+1], ")")
    } else {
      # 最后一个区间:闭区间
      v[i] <- paste0("[", lim[i], ", ", lim[i+1], "]")
    }
  }
  v
}

intervalos <- limites(4)
frecuencias <- sample(10:30, 4)
tabla <- data.frame(intervalos, frecuencias)
colnames(tabla) <- c("Intervalos", "Frecuencias")

# 类中值计算函数保持不变(优化了向量预分配)
marcasdeclase <- function(v){
  vect <- numeric(length(v)-1)
  for (k in seq_along(vect)) {
    vect[k] <- mean(c(v[k], v[k+1]))
  }
  vect
}

# 生成表格的代码块
<<echo=FALSE, results=hide, fig=TRUE,width=7.5,height=4>>=
tabla <- data.frame(intervalos, frecuencias)
colnames(tabla) <- c("Intervalos", "Frecuencias")
grid.table(tabla, rows = NULL)
@

关键优化点

  1. 括号格式控制:通过i < m判断是否为最后一个区间,分别输出[a, b)和[a, b]格式,完全匹配需求。
  2. 向量预分配:用character(m)预先创建结果向量,比循环中c(v, ...)的拼接方式更高效,避免内存反复扩容。
  3. 类中值函数优化:同样用numeric(length(v)-1)预分配向量,提升代码运行效率。

内容的提问来源于stack exchange,提问作者Amelia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:22:57