R计算两个变量的可能值

时间:2012-05-26 12:35:26

标签: r math

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

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

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

之间

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

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分: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