如何将一个数转换为R中另一个数的第一个可除数
我想将任何数字除以如何将一个数转换为R中另一个数的第一个可除数,r,integer,division,R,Integer,Division,我想将任何数字除以6,仍然有一个整数。那么,我怎样才能使R将一个数字转换成最接近的可除数呢 例如,在这种情况下,应将607转换为606。这里有三种方法 foo_Gregor = function(N, n){ return(round(N / n) * n) } foo_HubertL = function(N, n){ return(n*((N+n/2) %/% n)) } foo_db = function(N, n){ t1 = N %% n if (t
6
,仍然有一个整数。那么,我怎样才能使R
将一个数字转换成最接近的可除数呢
例如,在这种情况下,应将
607
转换为606
。这里有三种方法
foo_Gregor = function(N, n){
return(round(N / n) * n)
}
foo_HubertL = function(N, n){
return(n*((N+n/2) %/% n))
}
foo_db = function(N, n){
t1 = N %% n
if (t1 < n/2){
return(N - t1)
} else {
return(N + n - t1)
}
}
var_db = sapply(1:10000, function(i) foo_db(N = i, n = 6))
var_Gregor = sapply(1:10000, function(i) foo_db(N = i, n = 6))
var_HubertL = sapply(1:10000, function(i) foo_db(N = i, n = 6))
identical(var_db, var_Gregor)
#[1] TRUE
identical(var_HubertL, var_Gregor)
#[1] TRUE
foo_Gregor=函数(N,N){
返回(轮(N/N)*N)
}
foo_HubertL=函数(N,N){
回报率(n*((n+n/2)%/%n))
}
foo_db=函数(N,N){
t1=N%%N
如果(t1
foo_Gregor
可能是最好的,因为它简单,并且能够用floor
或floor
修改它。最近的是606。round(x/6)*6
。用地板
或天花板
替换圆形
,使其始终上升或下降。6*(607%/%6)
@HubertL这是使用地板
的一种(可能更有效)方法。。。将始终向下,而不是最近的。6*((609+6/2)%/%6)