【发布时间】:2020-05-26 04:40:01
【问题描述】:
我想知道是否有一种有效的方法可以知道我的数据框中我的列的哪些值是否是 2 的幂。 我的数据是一个有 6 列的数据框,其中一列的值是我想要检查的值是否是 2 的幂。
class(df$doubling_times) > numeric
【问题讨论】:
标签: r dataframe validation filter data-science
我想知道是否有一种有效的方法可以知道我的数据框中我的列的哪些值是否是 2 的幂。 我的数据是一个有 6 列的数据框,其中一列的值是我想要检查的值是否是 2 的幂。
class(df$doubling_times) > numeric
【问题讨论】:
标签: r dataframe validation filter data-science
log2(x) %% 1 == 0 - 检查数字的以 2 为底的对数是否为整数(除以 1 时,余数为 0?)
> x = 1:10
> data.frame(x, power2 = log2(x) %% 1 == 0)
x power2
1 1 TRUE
2 2 TRUE
3 3 FALSE
4 4 TRUE
5 5 FALSE
6 6 FALSE
7 7 FALSE
8 8 TRUE
9 9 FALSE
10 10 FALSE
上述方法应该可行,但更安全的方法会考虑浮点精度问题,可能是这样的:
remainder = log2(x) %% 1
tol = 1e-12 # tolerance
power2 = abs(remainder - round(remainder)) < tol
【讨论】: