使用 dplyr 过滤行总和时出错
Error when filering on rowSums using dplyr
我有以下 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: Plain rowSums(df)!=0 工作得很好并且给了我预期的 logical
好的,我明白了。
过滤器(df,rowSums(df)!=0)
不是最难的...
谢谢。
解决该问题的一种更 tidyverse
风格的方法是使您的数据 tidy,即只有一个数据值。
示例数据
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 一样快,而且它并不总是适用于所有数据类型。
我有以下 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: Plain rowSums(df)!=0 工作得很好并且给了我预期的 logical
好的,我明白了。 过滤器(df,rowSums(df)!=0)
不是最难的... 谢谢。
解决该问题的一种更 tidyverse
风格的方法是使您的数据 tidy,即只有一个数据值。
示例数据
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 一样快,而且它并不总是适用于所有数据类型。