我对 R 比较陌生,遇到了一个奇怪的问题。我正在尝试对数据框进行子集化,但是如果以特定方式输入用于子设置的值,则它会失败。
例如,这是原始数据框:
X time_mean temp_mean covas_mean
1 1426 28.50 45.02 77
2 1427 28.52 45.18 77
3 1428 28.54 45.06 77
4 1429 28.56 45.01 77
5 1430 28.58 45.01 77
6 1431 28.60 45.04 77
7 1432 28.62 44.97 77
8 1433 28.64 45.02 77
9 1434 28.66 44.91 77
10 1435 28.68 44.99 76
11 1436 28.70 44.77 76
如果我尝试使用此代码进行子集化,则无法创建空数据框:
# This does not work
var <- 23 + 0.7 + 0.9
subset(data, time_mean == var+4.00)
[1] X time_mean temp_mean covas_mean
<0 rows> (or 0-length row.names)
如果我这样子集,它的工作原理:
# This works
var <- 23 + 0.7 + 0.7 + 0.1 + 0.1
subset(data, time_mean == var+4.00)
X time_mean temp_mean covas_mean
6 1431 28.6 45.04 77
任何想法发生了什么?谢谢你。
R 版本 3.5.0 (2018-04-23) macOS 10.13.4 (17E202) (x86_64, darwin15.6.0)
这似乎是一个浮点问题。您可以使用round
和使用 2 位数字并且subset
会起作用。
> subset(df, time_mean == round(var+4.00, 2))
X time_mean temp_mean covas_mean
6 1431 28.6 45.04 77
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句