如何在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) @
关键优化点
- 括号格式控制:通过
i < m判断是否为最后一个区间,分别输出[a, b)和[a, b]格式,完全匹配需求。 - 向量预分配:用
character(m)预先创建结果向量,比循环中c(v, ...)的拼接方式更高效,避免内存反复扩容。 - 类中值函数优化:同样用
numeric(length(v)-1)预分配向量,提升代码运行效率。
内容的提问来源于stack exchange,提问作者Amelia
相关产品推荐
相关产品推荐

