dplyr 中的filter报错:Can‘t transform a data frame with duplicate names

网友投稿 476 2022-09-24

dplyr 中的filter报错:Can‘t transform a data frame with duplicate names

背景

处理一个数据框,用filter进行筛选数据时,发现了这个报错:

aa1 %>% filter(POS_strt == “20696”) Error in ​​​filter()​​​: ! Can’t transform a data frame with duplicate names. Run ​​​rlang::last_error()​​ to see where the error occurred.

根据提示运行:​​rlang::last_error()​​,也没有看到问题所在:

> rlang::last_error()Error in `filter()`:! Can't transform a data frame with duplicate names.---Backtrace: 1. aa1 %>% filter(POS_strt == "20696") 3. dplyr:::filter.data.frame(., POS_strt == "20696")Run `rlang::last_trace()` to see the full context.

在网上找了很久,终于解决了,总结一下。

问题解决

主要是因为数据框中的列名有重复,其实报错中也给出了:

! Can’t transform a data frame with duplicate names.

但是,我以为是rownames有重复,其实是colnames有重复,这里检查一下:

names(aa1) %>% duplicated() %>% table

用make.names处理一下列名,重复的后缀加.1

nn = names(aa1)names(aa1) = make.names(nn,unique = T)names(aa1)

总结

tidyverse的数据框,不能有列名重复,否者filter之类的函数都不能使用。解决方案可以用base包中的​​make.names​​处理,进行重命名。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:公关界007:明星营销课代表,王一博代言的SKG算一个!
下一篇:java书写并建立txt日志文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~