如何用R求两个实数之间的所有整数
问题:如何编写一个函数来接收如何用R求两个实数之间的所有整数,r,integer,R,Integer,问题:如何编写一个函数来接收a和b作为输入,并返回它们之间的所有整数。因此,假设我们在之间有一个名为integers\u的函数,其行为类似于此,我们应该期待以下示例: # Returns an array of integers in between a and b integers_inbetween(1, 4) [1] 2 3 及 及 如何在R中实现这种逻辑?这个解决方案应该可以工作。我假设如果a>b,函数应该工作,如果不工作,也应该工作。按照我编写的方式,如果在取整a==b之后,函数返回
a
和b
作为输入,并返回它们之间的所有整数。因此,假设我们在之间有一个名为integers\u的函数,其行为类似于此,我们应该期待以下示例:
# Returns an array of integers in between a and b
integers_inbetween(1, 4)
[1] 2 3
及
及
如何在R中实现这种逻辑?这个解决方案应该可以工作。我假设如果a>b
,函数应该工作,如果不工作,也应该工作。按照我编写的方式,如果在取整a==b
之后,函数返回NULL
inbetween_integers <- function(a, b) {
a <- round(a)
b <- round(b)
if (abs(a - b) <= 1)
return(NULL)
if (b < a)
return(seq.int(from = b + 1, length.out = abs(a - b) - 1))
return(seq.int(from = a + 1, length.out = abs(a - b) - 1))
}
中间整数您可以尝试下面的代码
inbetween_integers <- function(a, b) {
u <- sort(c(a, b))
res <- setdiff(ceiling(u[1]):floor(u[2]), c(a, b))
if (!length(res)) {
NULL
} else {
res
}
}
建议:像您那样使用if/else
是没有用的。只有两种可能的结果,所以你可以:if(!length(res))return(NULL)
然后就返回return(res)
@eduardokapp是的,没错,我们可以这样做。你能接受最好的答案吗?
inbetween_integers <- function(a, b) {
a <- round(a)
b <- round(b)
if (abs(a - b) <= 1)
return(NULL)
if (b < a)
return(seq.int(from = b + 1, length.out = abs(a - b) - 1))
return(seq.int(from = a + 1, length.out = abs(a - b) - 1))
}
inbetween_integers <- function(a, b) {
u <- sort(c(a, b))
res <- setdiff(ceiling(u[1]):floor(u[2]), c(a, b))
if (!length(res)) {
NULL
} else {
res
}
}
> inbetween_integers(1, 4)
[1] 2 3
> inbetween_integers(4, 1)
[1] 2 3
> inbetween_integers(3.5, 4)
NULL