df[with(df, as.logical(ave(value, group, FUN= function(x) x <quantile(x, probs = 0.99)))), ]
此代码违反了规则10.4,这是由于无符号的var1和签名的var2。
我已尝试将其中一个变量转换为其他变量。但这不是一种通用的方式。
有没有办法做到这一点?
答案 0 :(得分:0)
规则10.4是合理的规则,因为它可以防止可能导致签名变更的隐式类型转换。这就是您的代码中发生的事情,var1 + var2
导致var2
被静默提升为无符号类型。这不好,因为首先必须签署这个变量的原因。
只需确保跟踪算法中的签名即可。如果签名变量将具有负值,则隐式转换为unsigned是一个错误。或者,如果您知道该值始终为正,因此签名无关紧要,则只需将签名变量转换为uint32_t
。