2013-05-03 7 views
0

Как лучше всего проверить (и выбрать), если double равен «нулю». Если вы пробоились:R тест, если двойное значение равно нулю в dataframe

summary(df.1[weights==0,1]) 
      Min. 1st Qu.  Median  Mean 3rd Qu.  Max.  NA's 
    -100880.000  0.000  0.000  1.179  0.000 90993.000  17597 

Но поскольку результаты отличные от нуля - что-то должно быть неправильно.

EDIT 1 я обеспечил ColName правильно - но я все еще получаю ту же ошибку:

head(df.1) 
     weights 
1 0.00000 
2 -57.09428 
3 0.00000 
4 0.00000 

    summary(df.1[weights==0,1]) 
       Min. 1st Qu.  Median  Mean 3rd Qu.  Max.  NA's 
     -100880.000  0.000  0.000  1.179  0.000 90993.000  17597 
+1

Вы проверяете, если элементы вектора в вашей глобальной среде называется 'weights' равны нуль, и используя это подмножество первого столбца вашего' data.frame'. Этот вектор совпадает с первым столбцом? – James

+0

@ Джеймс Ага! df.1 имеет LOST имена столбцов. Он был создан df.1 <-as.data.frame (df [1: 20000,1]). Почему коды были удалены? – ManInMoon

+0

@James - см. EDIT 1 – ManInMoon

ответ

1

Если вы хотите проверить, если что-то, скажем x, равна нулю:

isTRUE(all.equal(x, 0)) 

Но это не работает с векторами так, как мы ожидаем. Так давайте включать this solution:

AlmostEqual <- function(x, y, tolerance=1e-8) { 
    diff <- abs(x - y) 
    mag <- pmax(abs(x), abs(y)) 
    ifelse(mag > tolerance, diff/mag <= tolerance, diff <= tolerance) 
} 

Тогда:

subset(df.1, AlmostEqual(df.1$weights, 0)) 
Смежные вопросы