【问题标题】:value from unique elements独特元素的价值
【发布时间】:2017-07-22 02:03:34
【问题描述】:

我正在用 R 编写一个 QC 程序来处理来自报告自身错误代码的仪器的数据。这些代码被报告为位值,所以

0

表示“一切正常”,而:-

1, 2, 4, 8, 16, 32, 64, 128

每个都代表一个独特的错误。多个错误可能同时发生,在这种情况下,代码相加得到一个新数字,例如:-

error "2" + error "32" = code "34"

而且由于这些总和都是唯一的,因此任何给定的代码值都可以分解为其构成错误。我正在寻找一种方法来编程从这些代码中识别错误。我正在努力寻找一种方法,但我能想到的一切都涉及查找表或一大堆循环......这两种方法看起来都不是很优雅。

与其重新发明轮子,我想知道是否已经存在 R 函数来执行此操作。

以前有人遇到过这种问题吗?

【问题讨论】:

  • 如果你有 2 的所有幂,你可以使用按位或,例如。 bitwOr(1,2)。然后,错误的消歧就是如果在该位置出现 1,例如。 bitwAnd(bitwOr(1,2),2)
  • 很好的解决方案@jenesaisquoi! Florian 的回答非常适合这种情况,但我不知道 R 中的位运算符,所以这真的很有帮助!

标签: r binary uniqueidentifier


【解决方案1】:

您可以将数字转换为位,并使用该表示来查找错误。

2^(which(intToBits(34)==1)-1)

返回

2 32

希望这会有所帮助!

【讨论】:

  • 不错的解决方案+1~
  • 我刚刚完成了一个 for 循环方法的编码,但这非常好(1 行而不是 20+) - 感谢 Florian!
  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2011-03-26
相关资源
最近更新 更多