Ошибка при записи в 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)

Не самый сложный... Спасибо.

Другие вопросы по тегам