首页 > 解决方案 > 如何根据来自第二个数据帧的部分字符串对数据帧进行子集化?

问题描述

在 R...

我想对数据框 A 进行子集化:

taxa        X16_K005A.S1.L1    X16_K007A.S1.L1    X16_K008A.S1.L1 
fish        0                  2                  4
dog         9                  0                  10 

基于来自数据框 B 的部分字符串

K005A
K008A

获取只有第一行和具有该部分字符串的行的数据框:

taxa   X16_K005A.S1.L1  X16_K008A.S1.L1 
fish   0                4
dog    9                10 

我尝试了 grepl、%in% 和 strsplit,但没有成功

标签: r

解决方案


这是一种使用的可能性grep

dfA[, sapply(dfB[, 1], grep, colnames(dfA))]
#  X16_K005A.S1.L1 X16_K008A.S1.L1
#1               0               4
#2               9              10

样本数据

dfA <- read.table(text =
    "taxa        X16_K005A.S1.L1    X16_K007A.S1.L1    X16_K008A.S1.L1
fish        0                  2                  4
dog         9                  0                  10 ", header = T)


dfB <- read.table(text =
    "K005A
K008A")

推荐阅读