R:尽可能均匀地分配数量 II

2023-12-10

我们有一定的数量,例如300 单位。该数量应尽可能均匀地分布在 40 个“槽”或“箱”中。如果每个槽都相同,那就很容易了 - 所以每个槽都是 7.5。然而,插槽的大小各不相同,我们不能“填充”超过其“大小”允许的范围,例如如果只有 4 个。我们不能“填写”超过 4 个。因此,我们必须在其他项上分配更多。

让我们假设还有另一个限制:一般填充限制,例如5. 这意味着即使我们的槽位有足够的大小来填充 12,并且还有足够的剩余单位(比如 11),我们也只能填充 5。所有槽位都填满后多余的值应该放在一个单独的值中。余数槽。 在每次填充过程中,我们还应该得到一个数字,即最大填充容量的使用百分比。 IE。如果我们填写4和5就是一般的填写限额。我们用了80%。

我们之前在另一个问题中已经讨论过这一点:尽可能均匀地分配数量

我有一些想法如何进一步发展这个公式,但部分仍然存在。 感谢您的帮助!

# developing slots and their "size" 
a <- rnorm(40,10,4) 
sum(a) 

# overall sum to distribute 
b <- 300  
# general filling in limit
c <- 8

optimal.fill <- function(a, b) 
{ 
  stopifnot(sum(a) >= b) 

  d <- rep(0, length(a))
  info <- rep(0, length(a))  
  while(b > 0) { 
    has.room  <- a > 0 
    num.slots <- sum(has.room) 
    min.size  <- min(a[has.room]) 
    add.size  <- min(b / num.slots, min.size)
    #maximum limitation
    add.size[add.size>c]  <- c
    #percentage info
    info[has.room] <- add.size/c
    d[has.room] <- d[has.room] + add.size 
    a[has.room] <- a[has.room] - add.size 
    b <- b - num.slots * add.size 
    } 
  return(d) 
} 
optimal.fill(a,b)

这个怎么样

optimal.fill <- function(a, b, generalLimit = 8){
  a <- pmax(0, pmin(a, generalLimit))
  if(sum(a) < b){
    stop("not enough room")
  }
  if(length(a) * min(a) <= b){
    result <- rep(min(a), length(a))
  } else {
    result <- rep(floor(b / length(a)), length(a))
  }
  while(floor((b - sum(result)) / sum(result < a)) >= 1){
    if(min(a[result < a]) * sum(result < a) <= b - sum(result)){
      result[result < a] <- 
        result[result < a] + rep(min(a[result < a]), sum(result < a))
    } else {
      result[result < a] <- 
        result[result < a] + 
        rep(floor((b - sum(result)) / sum(result < a)), sum(result < a))
    }
  }
  extra <- sample(which(result < a), (b - sum(result)), replace = FALSE)
  result[extra] <- result[extra] + 1
  return(cbind(result,  result / a))
}
optimal.fill(ceiling(rnorm(40,10,4)), 300, 8)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:尽可能均匀地分配数量 II 的相关文章

  • 如何在不指定数据集的情况下调整函数

    我有一个函数 基本上可以过滤SPV行 如下所示 请注意 我这样做return coef lt function df1 idd dmda CategoryChosse 然而 我不希望df1作为函数的参数 而是函数的属性df1数据集 在本例中
  • R、GeoJSON 和 Leaflet

    我最近从 R Bloggers com 的帖子中了解了 leafletjs com 我想要实现的一个此类教程是使用传单创建交互式分区统计图 http leafletjs com examples choropleth html http l
  • glmnet R 包中的 cv.glmnet 出现“drop(y %*% rep(1, nc)) 错误”错误

    我有一个返回 cv glmnet 模型的 auc 值的函数 尽管不是大多数时间 但在执行 cv glmnet 函数时 它经常返回以下错误 下降误差 y 代表 1 NC 在为函数 drop 选择方法时评估参数 x 时出错 y 中的错误 rep
  • ggplot2 的组合图(不在单个图中),使用 par() 或 layout() 函数? [复制]

    这个问题在这里已经有答案了 我一直在考虑使用 par 或 layout 函数来组合 ggplots 可以使用这些功能吗 假设我想绘制 ggplot 散点图和 ggplot 直方图 我想将这两个地块合并起来 而不是在一个地块中 是否适用 我在
  • 将线条剪裁到绘图区域并在绘图区域外显示文本

    我想限制绘图的可见 y 范围 为了保留超出此范围的值 我需要设置oob 出界 to rescale none这效果很好 不过 我还想在图外的页边空白处添加一些文本 为了做到这一点 我需要关闭剪辑 这会导致超出范围的值被绘制在绘图区域之外的边
  • 在 R 中将本地日期时间转换为 UTC

    如何将本地日期时间转换为以下格式 12 31 2014 6 42 52 PM R 中的 UTC 我试过这个 as POSIXct as Date 12 31 2014 6 42 52 PM format m d Y H M S tz UTC
  • 如何编写一个也接受字符输入的 NES 函数?

    我正在开发一个将字符串作为函数参数的 R 包 现在我想使用非标准评估来允许非字符串输入 另外 为了保持向后兼容性 我想保留函数接受字符串的可能性 哈德利给出了example https cran r project org web pack
  • 使用 dplyr 和 ggplot 绘制包括负值的多面水平发散堆积条形图

    我希望这个例子能够让人清楚 我想要堆叠条形 其中中间条形跨越 0 因为它代表中性值 这与李克特量表一起使用 为了重现性 我使用钻石数据集 以下示例与我的用例足够接近 并演示了我很难以正确的顺序获取 好 或 正 数据 因此中性最接近 0 这是
  • 如何在闪亮的应用程序中显示矩阵,并用条件指定颜色?

    我有一个具有正值和负值的矩阵 M 我正在尝试使用 DT 包在闪亮的应用程序中显示为表格 我想用不同的颜色显示矩阵 红色的正数和负数 例如 到目前为止 我只能以一对一的方式添加颜色 但我想以这种方式添加颜色 如果matrix values g
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

    当我使用进行预测时forecast库 我注意到以下代码没有按预期运行 library forecast library dplyr df1 lt data frame gp gl 20 5 dt seq 1 100 get lt funct
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 插值时间序列

    我有两组具有不同时间戳的数据 一组数据包含校准数据 另一组包含样本数据 校准的频率比样品少得多 我想做的是将校准数据 低频 插值到采样时间序列 高频 上 sam lt textConnection time value 01 00 52 2
  • 如何在 ggplot2 中向 x 轴添加特定值?

    我正在尝试在 ggplot2 中绘制图表 我希望 x 轴显示 2 84 以及下面键入的序列 除了在 Breaks 中输入所有精确值之外 还有其他方法吗 我尝试了谷歌 但它没有解决我的问题 scale x continuous limits
  • 如何在 R 中使用 msgbox [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在中显示消息框R 我正在寻找类似的东西msgbox在 VBA 中 因此我可以向用户发出有关问题的警报 此外 我想允许一些用户交互 例如
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 在 R 中高效加载稀疏矩阵

    我在将数据有效加载到 R 中的稀疏矩阵格式时遇到问题 这是我当前策略的 不完整 示例 library Matrix a1 Matrix 0 5000 100000 sparse T for i in 1 5000 a1 i idxOfCol
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2
  • 如何将带有几行代码的字符数组转换为 data.frame?

    我有以下数组 my list lt c Jan 01 Dec 31 00 00 24 00 Jan 01 Jun 30 12 00 18 00 Jul 06 Dec 31 09 00 19 00 导致以下结果的最短代码是什么 x1 x2 x
  • 如何解决 R 估计中的整数溢出错误

    我正在尝试使用估计模型speedglm在 R 中 数据集很大 约 6988 万行和 38 列 行数和列数相乘得到约 27 亿 超出了整数限制 我无法提供数据 但以下示例重现了该问题 library speedglm large exampl

随机推荐

  • FirstPrivate 和 LastPrivate 与 OpenMP 中的 Private 子句有何不同?

    我看了官方的定义 但还是很困惑 firstprivate 指定每个线程应该有自己的变量实例 并且应该使用变量的值来初始化该变量 因为它存在于并行构造之前 对我来说 这听起来很像私人的 我寻找了示例 但我似乎不明白它有何特别之处或如何使用它
  • 使用 Qt 线程和信号的缓冲区溢出

    我必须将项目从 QT5 降级到 QT4 并在执行此操作时出现奇怪的缓冲区溢出错误 这是我的代码 我像这样创建一个 QThread thread new QThread reader new Reader reader gt setParam
  • 直接访问空对象 {} 上的属性时出现语法错误[重复]

    这个问题在这里已经有答案了 gt object Number Object prototype toString call 1 1 lt true gt object Number toString call 1 2 lt true gt
  • Bash:选择与模式匹配的上一个命令

    我知道使用向上和向下箭头进行 bash 历史导航 我想要一种懒惰的方法来选择与某些正则表达式匹配的上一个命令 该命令比整个命令短 因此键入所需的时间更少 用bash可以吗 如果没有的话其他shell有这样的功能吗 您可以随时使用CTRL R
  • 此 iPhone 6 运行的是 iOS 11.3.1 (15E302),该版本的 Xcode 可能不支持

    我正在使用 Xcode 9 2 和 Sierra 10 3 3 我的 iPhone 6 版本为 11 3 1 15E302 我无法使用 iPhone 6 来测试 IOS 应用程序 因为 Xcode 说 无法找到设备支持文件 此 iPhone
  • 如何首先按值排序 std::map,然后按键排序?

    我需要排序一个std map按值 然后按键 该地图包含如下数据 1 realistically 8 really 4 reason 3 reasonable 1 reasonably 1 reassemble 1 reassembled 2
  • 有什么办法可以链接到我的应用程序的 Android 通知设置吗?

    有什么方法可以启动意图来访问我的应用程序的 Android 通知设置屏幕 如下图所示 或者有一种简单的方法可以制作一个只需单击即可引导至此处的 PreferenceScreen 项目 以下内容适用于 Android 5 0 Lollipop
  • 查找二维数组或直方图的两个主要峰以及峰之间的谷

    for int i 0 i lt c length i for int j 0 j
  • 无法将 Firebase cocoapod 添加到 kotlin 多平台共享模块

    我正在将 Android iOS 应用程序迁移到 Kotlin 多平台框架 这个过程或多或少进展顺利 但是所有与从 iOS 框架 pod 导入以在共享代码模块中使用它们相关的事情都不容易 这次 我在尝试在通用模块中开发共享类来处理与分析和崩
  • 意外的字符串常量[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我的数据库有问题 我想在R中输入数据库 但出现此消息 错误意外的字符串常量 我写了这个命令 read csv prova1 sep header 20 有什么问题 我想我的数
  • 在具有透明背景的 Octave 中保存绘图

    我使用 Octave 绘制了一些 GPS 轨迹和航向矢量 我想将绘图覆盖在卫星图像上 但是当我保存绘图时 它具有白色背景 有没有办法保存为透明背景 我认为将 print 与 pngalpha 设备一起使用可以满足您的需求 例如 print
  • Android ActionBar/Toolbar 颜色在浅色主题和深色主题中不同

    我试图理解为什么ActionBar浅色主题与深色主题的风格不同 下面是一个简单的设置屏幕 可以在具有相同主题的浅色和深色主题之间切换 值 主题 xml
  • php日期和夏令时混淆

    我遇到了一个问题 我 99 确信它与昨天开始的夏令时有关 以下脚本 其中 86400 是一天的秒数 给出以下输出 1383451200 2013 11 03 1 1383537600 2013 11 03 0 2 个时间戳 以一天中的秒数分
  • 使用 jQuery 从 URL 获取查询字符串 [重复]

    这个问题在这里已经有答案了 我有以下网址 http www mysite co uk location mylocation1 我需要得到的值location将 URL 转换为变量 然后在 jQuery 代码中使用它 var thequer
  • 在 ruby​​ 中如何判断输入的字符串是大写还是小写?

    我正在尝试编写一个程序 当输入单个字母时 如果它是大写字母 则将其保留为大写字母并返回它 如果它是小写字母 则将其转换为大写字母 我该如何编写才能判断字符串最初是大写还是小写 只需将字符串转换为大写并与原始字符串进行比较 string st
  • 设置 SCORM 课程进度

    我只是想知道 是否可以在运行时在 SCORM 文件中设置课程进度 我应该检查哪种方法 进度将根据 SCO 开发人员的学习要求来定义 一般来说 达到的目标 cmi objectives 数量或学习者访问的页面数量 要存储进度 如果 SCORM
  • Shiny 中 fillPage 的基本示例 - 它是如何工作的?

    我不明白如何获得一个图来完全填充我的仪表板 除了标题之外 我想我必须使用 fillPage 但我无法让它工作 这是我的例子 我很感谢任何提示 ipak lt function pkg new pkg lt pkg pkg in instal
  • 为什么这个并行代码比类似的非并行版本慢?

    我有以下代码 从 LINQPad 复制到此处 显然 我似乎不明白 TPL 是如何工作的 或者代码是垃圾 为什么并行版本比非并行版本运行得慢 for int i 0 i lt 100 i ParallelOptions ops new Par
  • Firebase 未将 CORS 标头添加到 REST 请求

    有没有办法为 REST 端点启用 CORS 如上所述here and here Firebase 似乎不再默认添加它们 对于不需要实时连接或无法使用 Websocket 的应用程序来说 这将很有帮助 这是对 Firebase 的 REST
  • R:尽可能均匀地分配数量 II

    我们有一定的数量 例如300 单位 该数量应尽可能均匀地分布在 40 个 槽 或 箱 中 如果每个槽都相同 那就很容易了 所以每个槽都是 7 5 然而 插槽的大小各不相同 我们不能 填充 超过其 大小 允许的范围 例如如果只有 4 个 我们