Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
{integer包含2}函数的某些幂_R - Fatal编程技术网

{integer包含2}函数的某些幂

{integer包含2}函数的某些幂,r,R,我有一个表示对象状态的数字,我想检查其中一个状态。例如,如果数字为“22”,则在检查16、4或2时应返回true,而在检查其他任何内容时应返回false。 我的职能是 containsOrderType <- function(orderType, state) #returns whether the bitmask translates to containing that order type { state <- as.numeric(state) if(orderT

我有一个表示对象状态的数字,我想检查其中一个状态。例如,如果数字为“22”,则在检查16、4或2时应返回true,而在检查其他任何内容时应返回false。 我的职能是

containsOrderType <- function(orderType, state) #returns whether the bitmask translates to containing that order type
{
  state <- as.numeric(state)
  if(orderType>state) return(FALSE)
  binState <- as.integer(state)
  class(binState) <- "binmode"
  binState <- as.character(binState)
  dim(binState) <- dim(state)
  X<-log2(orderType)+1
  if(str_sub(binState,-X,-X)==1) return(TRUE)
  return(FALSE)
}

所以这些都没有被软件包或任何奇怪的东西覆盖。

显然,我在程序中移动了一些东西,但不知何故没有包含R.utils本身。。。奇怪,因为我认为我复制了代码,所以我必须包含该包。 不管怎样,我会把这个留着,以防其他人需要。 因为我已经包含了这个包,所以我的代码可以简化为:

containsOrderType <- function(orderType, state) #returns whether the bitmask translates to containing that order type
{
  state <- as.numeric(state)
  if(orderType>state) return(FALSE)
  binState <- intToBin(as.integer(state))
  X<-log2(orderType)+1
  if(str_sub(binState,-X,-X)==1) return(TRUE)
  return(FALSE)
}

containersordertype显然,我在程序中移动了一些东西,但不知何故没有包含R.utils本身。。。奇怪,因为我认为我复制了代码,所以我必须包含该包。
不管怎样,我会把这个留着,以防其他人需要。
因为我已经包含了这个包,所以我的代码可以简化为:

containsOrderType <- function(orderType, state) #returns whether the bitmask translates to containing that order type
{
  state <- as.numeric(state)
  if(orderType>state) return(FALSE)
  binState <- intToBin(as.integer(state))
  X<-log2(orderType)+1
  if(str_sub(binState,-X,-X)==1) return(TRUE)
  return(FALSE)
}

containersordertype例如,在base R中尝试
bitwAnd
函数

> bitwAnd(22, 2^(0:10))
 [1]  0  2  4  0 16  0  0  0  0  0  0
> bitwAnd(1:22, 16)
 [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 16 16 16 16 16 16 16
> bitwAnd(4, 2060)
[1] 4
> (bitwAnd(8, 2060) != 0) == containsOrderType(8, 2060)
> TRUE

或者包中的
bitAnd

例如,尝试在base R中使用
bitAnd
函数

> bitwAnd(22, 2^(0:10))
 [1]  0  2  4  0 16  0  0  0  0  0  0
> bitwAnd(1:22, 16)
 [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 16 16 16 16 16 16 16
> bitwAnd(4, 2060)
[1] 4
> (bitwAnd(8, 2060) != 0) == containsOrderType(8, 2060)
> TRUE

或者包中的
bitAnd

您可以使用
gmp::factorize
作为:

Rgames> 2%in%as.numeric(factorize(20))
[1] TRUE
请注意,
gmp
函数返回
bigz
类内容,这就是原因

Rgames> 2%in%factorize(20)
[1] FALSE
发生了

回答hedgeandlevered的评论——如果您希望您的号码的最大功率为
2
,那么

Rgames> 2^(sum(factorize(20)==2))
[1] 4

我会帮你的。(请注意,
=
将其参数强制为一个公共类)

您可以使用
gmp::factorize
作为:

Rgames> 2%in%as.numeric(factorize(20))
[1] TRUE
请注意,
gmp
函数返回
bigz
类内容,这就是原因

Rgames> 2%in%factorize(20)
[1] FALSE
发生了

回答hedgeandlevered的评论——如果您希望您的号码的最大功率为
2
,那么

Rgames> 2^(sum(factorize(20)==2))
[1] 4


我会帮你的。(请注意,
=
将其参数强制为一个公共类)

此函数仅限于小数值。例如,它找不到乐趣(42060)(这是真的)。@hedgedandlevered使用
bitops::bitAnd()
,如果您被限制在R-2.15.x函数不工作的事实使版本兼容性不是真正的问题bitops::bit(82060)返回8,这并不能帮助我了解乐趣(82060)应该是FALSE@hedgedandlevered但是
containsOrderedType(8200)
也返回TRUE?此函数仅限于小数字。例如,它找不到乐趣(42060)(这是真的)。@hedgedandlevered使用
bitops::bitAnd()
,如果您被限制在R-2.15.x函数不工作的事实使版本兼容性不是真正的问题bitops::bit(82060)返回8,这并不能帮助我了解乐趣(82060)应该是FALSE@hedgedandlevered但是
containsOrderedType(8200)
也返回TRUE?这依赖于几个包中的函数;将适当的库调用添加到解决方案中。true
library(stringr)
(和前面提到的
library(R.utils)
),这依赖于几个包中的函数;将适当的库调用添加到解决方案中。true<代码>库(stringr)
(和前面提到的
库(R.utils)
)您正试图以一种真正的方式重新发明轮子。超级酷的家伙,建设性的方式。谢谢你无缘无故的否决。这是一个合理的问题。如果它是“轮子”,那么简单的功能在哪里?它在包
bitops
中。告诉我它的实现很糟糕,因为我问了一个我不知道答案的问题而投票否决我是没有意义的。你正试图以一种真正正方的方式重新发明轮子。超级酷的家伙,建设性的方式。谢谢你无缘无故的否决。这是一个合理的问题。如果它是“轮子”,那么简单的功能在哪里?它在包
bitops
中。告诉我它的实现不好是好的,因为我问了一个我不知道答案的问题而投票否决我是没有意义的