首页 > 解决方案 > 当我尝试绘制连续图时,较长的对象长度不是较短对象长度的倍数

问题描述

我想通过更改阈值(x1_th_adj)的值来提供一个函数,该函数从数据帧(allfil_data,具有从-1到1范围内的不同x1值)返回观察次数。

数据框如下:

structure(list(x1 = c(-0.761194029850821, 0.236467236467132, 
0.0188679245282589, -0.518518518518598, 0.473684210526331, 0.284280936454798
)), row.names = c(NA, 6L), class = "data.frame")

代码是:

Summ_x1_th <- function(x1_th_adj){
  nrow(filter(allfil_data, abs(x1) >= x1_th_adj))
}

p <- ggplot(data = data.frame(x = 0), mapping = aes(x = x))
Summ_x1_th <- function(x1_th_adj){
  nrow(filter(allfil_data, abs(x1) >= x1_th_adj))
}
p + stat_function(fun = Summ_x1_th) + xlim(0,0.1)

错误显示:

In abs(x1) >= x :
  longer object length is not a multiple of shorter object length

PS:这可以通过for循环轻松完成,可能有1000个观察值,但我想看看 ggplot 是否可以做到这一点。谢谢!

标签: r

解决方案


我们可以用Vectorize

p + 
    stat_function(fun = Vectorize(Summ_x1_th)) + xlim(0,0.1)

推荐阅读