Ошибка при записи в rowSums с использованием dplyr
У меня есть следующий df, где df <- data.frame (V1 = c (0,0,1), V2 = c (0,0,2), V3 = c (-2,0,2))
Если я выполняю фильтр (df,rowSums!=0), я получаю следующую ошибку: Ошибка в filter_impl(.data, quo): Ошибка оценки: сравнение (6) возможно только для атомарных и списочных типов.
Кто-нибудь знает, почему это? Спасибо за вашу помощь
PS: Обычная rowSums(df)!=0 работает просто отлично и дает мне ожидаемый логический
2 ответа
Еще tidyverse
Стиль подхода к проблеме состоит в том, чтобы сделать ваши данные аккуратными, т. е. только с одним значением данных.
Пример данных
my_mat <- matrix(sample(c(1, 0), replace=T, 60), nrow=30) %>% as.data.frame
Уберите данные и сформируйте неявные суммы строк, используя group_by
my_mat %>%
mutate(row = row_number()) %>%
gather(col, val, -row) %>%
group_by(row) %>%
filter(sum(val) == 0)
Этот аккуратный подход не всегда такой же быстрый, как у базового R, и он не всегда подходит для всех типов данных.
Ладно, я понял. фильтр (Д.Ф.,rowSums(DF)!=0)
Не самый сложный... Спасибо.