r - 当我尝试绘制连续图时,较长的对象长度不是较短对象长度的倍数
问题描述
我想通过更改阈值(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 是否可以做到这一点。谢谢!
解决方案
我们可以用Vectorize
p +
stat_function(fun = Vectorize(Summ_x1_th)) + xlim(0,0.1)
推荐阅读
- reactjs - React - getDerivedStateFromProps - 字段值将加载道具但不会改变
- c++ - 在 c++ 中使用 printf 时出错,无法打开 LNK1104 exe 文件
- opencv - 使用opencv检测形状位置和航向
- python - 如何根据满足某些条件的现有文件创建和重新排列新的 csv 文件?
- python-3.x - 从 App Engine 的 python 代码将数据插入 Cloud SQL for MySQL
- jupyter-notebook - 在 AWS Sagemaker 上安装 Jupytext 插件
- java - 如何使用类?
- angular - 如何强制更新托管在 Firebase 上并与 FireStore 一起使用的无服务器 Angular SPA PWA
- c++ - C++:处理许多配置变量的设计建议
- javascript - 根据 localStorage 有条件地渲染组件