我有下面的table1个数据框,它由6列和8083行组成.下面我展示的是这table1人的头部:

|gene ID        |   prom_65|   prom_66|  amast_69|  amast_70|   p_value|
|:--------------|---------:|---------:|---------:|---------:|---------:|
|LdBPK_321470.1 |   24.7361|   25.2550|   31.2974|   45.4209| 0.2997430|
|LdBPK_251900.1 |  107.3580|  112.9870|   77.4182|   86.3211| 0.0367792|
|LdBPK_331430.1 |   72.0639|   86.1486|   68.5747|   77.8383| 0.2469355|
|LdBPK_100640.1 |   43.8766|   53.4004|   34.0255|   38.4038| 0.1299948|
|LdBPK_330360.1 | 2382.8700| 1871.9300| 2013.4200| 2482.0600| 0.8466225|
|LdBPK_090870.1 |   49.6488|   53.7134|   59.1175|   66.0931| 0.0843242|

我还有另一个数据框,叫做accessions40,是510个基因ID的列表.它是table1的第一列的子集,即其所有值(510)都包含在table1(8083)的第一列中.accessions40的头部如下所示:

|V1             |
|:--------------|
|LdBPK_330360.1 |
|LdBPK_283000.1 |
|LdBPK_360210.1 |
|LdBPK_261550.1 |
|LdBPK_367320.1 |
|LdBPK_361420.1 |

我想做的是:我想生成一个新的table2,在第一列(gene ID)下只包含accessions40中的值和table1中其他五列的相应值.换句话说,我想根据accessions40的值来子集table1的第一列.

推荐答案

我们可以用%in%行的向量来表示.

subset(table1, gene_ID %in% accessions40$V1)

更好的 Select 是data.table

library(data.table)
setDT(table1)[gene_ID %chin% accessions40$V1]

或者使用dplyr中的filter

library(dplyr)
table1 %>%
      filter(gene_ID %in% accessions40$V1)

R相关问答推荐

想要创建一个可以存储四个多元正态总体的多元偏度的载体

R kableExtra在插入水平线时添加额外的空白行

Select 与特定列中最大值对应的数据帧行

如何判断某列中由某些行组成的百分比

从有序数据中随机抽样

R Markdown中的交叉引用表

R箱形图gplot 2 4组但6个参数

在不安装软件包的情况下测试更新

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

用预测NLS处理R中生物学假设之上的误差传播

在for循环中转换rabrame

如何在Chart_Series()中更改轴值的 colored颜色 ?

矩阵的堆叠条形图,条形图上有数字作为标签

线性模型斜率在减少原始数据时提供NA

使用for循环和粘贴创建多个变量

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

使用RSelenium在R中抓取Reddit时捕获多个标签

在多页PDF中以特定布局排列的绘图列表不起作用

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

注释不会绘制在所有ggplot2面上