我正在尝试计算导致相同数量的单元格的网格大小(x 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 矩阵的快速函数。
有什么想法吗?
非常感谢
最佳答案
这个怎么样:
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
关于R计算两个变量的可能值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766251/