2

我正在尝试计算导致相同数量单元格的网格大小(x x y)的所有可能值,因此例如 2x2 网格的单元格大小为 4。我希望 y 是一半x,总数为,例如 4000。所以我想我希望 R 计算 x 和 y 的所有可能的正整数值,其中

function (total) {
x*y=total
x/y=2 
x!=total 
y!= total.
}

我想获得正整数并考虑不同解决方案的一种方法是允许总数比其原始值大 10%(但不能更小,我需要网格至少与我的总值一样大give),在这种情况下,函数可能有两个字段,tot(例如 4000)和容差(例如 10%)。总计(如上面的草图函数中使用的)必须在 tot 和 (tot+tolerance*tot) 之间

我有几个单元格大小,所以 4000 只是一个例子。我正在尝试构建一个仅返回正整数并返回 Xs 和 Ys 矩阵的快速函数。

有任何想法吗?

非常感谢

4

1 回答 1

2

那这个呢:

possible.sizes <- function(total, tolerance) {

   min.total <- total
   max.total <- total * (1 + tolerance)

   min.y <- ceiling(sqrt(min.total/2))
   max.y <- floor(sqrt(max.total/2))

   if (max.y < min.y)
      return(data.frame(x=numeric(0), y=numeric(0)))

   y <- seq(min.y, max.y)
   x <- 2*y

   return(data.frame(x=x, y=y))
}

possible.sizes(4000, 0.1)
#    x  y
# 1 90 45
# 2 92 46
于 2012-05-26T13:52:10.780 回答