Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用变边界等式绘制直方图_R_Histogram - Fatal编程技术网

R 用变边界等式绘制直方图

R 用变边界等式绘制直方图,r,histogram,R,Histogram,我想绘制一个直方图,其中桶由以下内容指定: • 4.25 ≤ E < 4.75 • 4.75 ≤ E < 4.90 • 4.90 ≤ E ≤ 5.10 • 5.10 < E < 5.25 • 5.25 ≤ E ≤ 5.75 •4.25≤ E

我想绘制一个直方图,其中桶由以下内容指定:

• 4.25 ≤ E < 4.75
• 4.75 ≤ E < 4.90
• 4.90 ≤ E ≤ 5.10
• 5.10 < E < 5.25
• 5.25 ≤ E ≤ 5.75
•4.25≤ E<4.75
• 4.75 ≤ E<4.90
• 4.90 ≤ E≤ 5.10
•5.10

请注意,等式是如何在左边界和右边界之间跳跃的。如何在代码中实现这一点?

据我所知,base R中没有剪切/断开功能,允许您指定这样的不规则断开。您可以包装
findInterval
来执行一些操作

findInterval2 <- function(x, br, rightmost.closed = FALSE, left.closed=TRUE,
    trim=FALSE, labels=NULL) {
    r <- findInterval(x, br, rightmost.closed)
    closed.left <- c(rep_len(left.closed, length(br)), rightmost.closed)
    m <- x %in% br
    slideright <- m & r==0 & !left.closed[1]
    r[slideright] <- r[slideright] + 1
    slideleft <- which(m & r!=0 & !left.closed[ifelse(r==0,NA,r)])
    r[slideleft] <- r[slideleft]-1
    rng <- 0:length(br)
    if(trim) {
        r[r<1 | r>length(br)-1] <- NA
        rng <- 1:(length(br)-1)
    }
    if (is.null(labels) || (is.logical(labels) && labels==TRUE)) {
        ff <- format(embed(br,2))
        labels <- paste0(
            ifelse(left.closed, "[","("), 
            ff[,2], ", ", ff[,1], 
           ifelse(c(left.closed[-1], rightmost.closed), ")","]")
        )
        if(!trim) {
            labels <- c(
                paste0("(-Inf,", ff[1,2], ifelse(left.closed[1], ")","]") ),
                labels,
                paste0( ifelse(rightmost.closed, "[","("), ff[nrow(ff),1], ", Inf)" )
            )
        }
    } else if (is.logical(labels) && labels==FALSE) {
        labels = NULL
    }
    if (!is.null(labels)) {
        r <- factor(r, levels=rng, labels=labels)
    }
    r
}
应该创造什么


  • 4.25查看函数
    hist
    中的
    breaks
    参数。
    rr <- findInterval2(x, br, rightmost.closed=FALSE, 
        left.closed=c(T, T, T, F, T), trim=TRUE) 
    
    set.seed(15)
    br <- c(4.25,4.75, 4.90, 5.10, 5.25, 5.75)
    x <- runif(45, min(br), max(br))
    rr <- findInterval2(x, br, rightmost.closed=FALSE, 
        left.closed=c(T, T, T, F, T), trim=TRUE)
    
    barplot(table(rr))