微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据表 R:合并来自多个 data.table 的选定列

如何解决数据表 R:合并来自多个 data.table 的选定列

我有数百个数据表,例如下面给出的示例,它们的行和列完全相同。我想将(不是通过 rbindlist)从所有数据表中选择的列(例如 ID、fdr 和 LogFC)合并到一个合并的 data.table 中。

               ID         P        fdr      LogFC            animals
 1:            A    1.568780e-01 2.5e-01  0.3348365           dog
 2:            B    4.960651e-05 2.6e-04  0.5768812           dog
 3:            C    3.123122e-01 4.2e-01  0.1872491           dog
 4:            D    8.583002e-07 8.3e-06  0.8387016           dog
 5:            E    2.776600e-03 8.4e-03  0.6495237           dog
 6:            F    3.925375e-06 3.3e-05  1.2510581           cat
 7:            G    4.248726e-07 4.7e-06  1.4029001           cat
 8:            H    1.497479e-03 4.8e-03  0.7471876           cat
 9:            I    3.335468e-07 4.0e-06  1.2297170           cat
10:            J    5.889612e-04 2.2e-03  1.0751952           cat

我尝试使用以下(来自 https://stackoverflow.com/posts/39561045/revisions;

DT.comb<-Reduce(function(...) merge.data.table (...,by="ID",all = TRUE),dt.list,allow.cartesian=T)

但我不确定如何将列选择传递给merge.data.table。虽然我可以通过使用 rbindlist 来实现这一点,删除不需要的列(例如 P 和动物),然后 dcast 表将其转换为宽格式,但如果我可以使用 merge.data.table,我会很棒,或者如果可能,其他方法。我非常感谢您对此的任何意见。

解决方法

只需将 by = "ID" 更改为 by = c("ID","FDR","logFC"),参数 allow.cartesian 应位于 merge

DT.comb <- Reduce(function(...) merge.data.table(...,by= c("ID","LogFC"),all = TRUE,allow.cartesian=TRUE),dt.list)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?