2

我有以下 df 其中 df <- data.frame(V1=c(0,0,1),V2=c(0,0,2),V3=c(-2,0,2))

如果我做filter(df,rowSums!=0)我得到以下错误: filter_impl(.data, quo) 中的错误:评估错误:比较 (6) 仅适用于原子和列表类型。

有谁知道这是为什么?谢谢你的帮助

PS:普通的 rowSums(df)!=0工作得很好,给了我预期的逻辑

4

2 回答 2

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 一样快,而且它并不总是适用于所有数据类型。

于 2018-02-01T18:09:07.983 回答
0

好,我知道了。过滤器(df,rowSums(df)!=0)

不是最困难的...谢谢。

于 2018-02-01T16:15:09.403 回答