问题描述
我正在尝试创建一个直方图,可以根据它们位于分布的头部还是尾部来为数据分配不同的bin大小。
我试图创建以下函数my_f
用作自变量breaks=
的输入,但是它不起作用。这是我的代码,以及我得到的错误。
x <- rnorm(1000,10,275)
my_f <- function(x){
loc <- list(x[x < -500],x[x >= -500 & x <= 500],x[x > 500])
dx <- c(5,1,5)
breaks <- sapply(1:length(x),function(i) if(x[i] %in% loc[[1]])
{seq(min(loc[[1]]),max(loc[[1]])+dx[1],dx[1])} else
if(x[i] %in% loc[[2]]){seq(min(loc[[2]]),max(loc[[2]])+dx[2],dx[2])} else
{seq(min(loc[[3]]),max(loc[[3]])+dx[3],dx[3])})
return(breaks)
}
h <- hist(x,breaks = my_f)
Error in hist.default(x,breaks = my_f,plot = F) :
c("Invalid breakpoints produced by 'breaks(x)': 200.1702,210.1702,....
我也尝试了不使用sapply
函数的情况,但是我什么都没得到。关于如何解决/解决此问题的任何建议?