1

我有一个包含两列(基因和 tpm)的小标题,我想提取以特定基因为中心的 n 个元素。tibble 在 tpm 列上排序。我现在分两步做。在这个例子中,我想要一个以 ELF2 基因为中心的 10 个元素窗口:

index <- e %>% rownames_to_column() %>% filter(gene=="ELF2") %>% select(rowname) %>% as.numeric()
e %>% dplyr::slice((index-10):(index+10))

有没有办法一次性完成?

这是我的 tibble 的一个小节:

structure(list(gene = c("UBE2S", "CHMP4A", "SLC25A39", "LAIR2", 
"KIAA0319L", "MGST3", "SHMT2", "ATRX", "RHOH", "PTPN2", "ST6GAL1", 
"RFWD2", "PFDN4", "CCPG1", "RARS", "USO1", "ESD", "COG5", "DAPP1", 
"THOC1", "SMAD3", "ERAP1", "GLYR1", "NHP2", "SART3", "GON4L", 
"REPS1", "MECP2", "CD59", "ZZEF1", "CHTOP", "HIVEP1", "LGALS3", 
"SUCLG1", "SKA2", "SNF8", "RCC2", "TTC37", "SIVA1", "ATP1B3", 
"ATP6V0D1", "EIF6", "NOTCH2", "RAB1A", "APOBEC3G", "SACM1L", 
"AK1", "NAA38", "TRIM25", "ATG12", "RBM12", "NDUFB11", "TINF2", 
"TOM1", "UFM1", "ORC4", "PTPN11", "PPP1R16B", "C16orf54", "ETFB", 
"PTPRA", "SERPINB1", "CDKN2D", "ZNF276", "MAGED2", "SPAG9", "HSBP1", 
"IFNGR2", "RAB6A", "MYC", "CKS1B", "FMR1", "EIF4E2", "COX17", 
"DENND4A", "HSF1", "PCF11", "DLD", "SNRNP40", "EZH2", "CMC2", 
"OTUD5", "DGUOK", "SRGAP2", "WDR43", "NOL11", "UBE2Z", "LUC7L", 
"NBPF12", "RAB21", "MADD", "PSME3", "EIF4A3", "ENTPD1", "SSH2", 
"DHPS", "SLFN12L", "ZNF410", "C11orf48", "MBTPS1", "EAPP", "HSPA5", 
"AKIRIN1", "DGKD", "OAS3", "ANKIB1", "P2RY10", "BAP1", "IGBP1", 
"MGAT4B", "CRTAP", "KDM6A", "TMX3", "SUMO3", "RPA3", "PSMF1", 
"NAA10", "HMOX2", "RHBDD2", "TCP11L2", "IFRD1", "SGMS1", "GOLGA4", 
"ZNF460", "IRAK1", "WDR33", "GPR75-ASB3", "SNX29", "ELF2", "SAE1", 
"WDFY1", "RHOC", "GIMAP7", "PIK3CA", "PPP1R9B", "CASK", "PAG1", 
"HLA-DMB", "SEPT1", "EXOSC10", "UBE2C", "CBLL1", "TXNDC17", "C1orf228", 
"RBCK1", "ATP5J", "LRPPRC", "SEC23A", "UGP2", "VBP1", "DNAJB14", 
"RNF31", "TACC3", "NDUFS8", "CRLF3", "ARFGEF1", "SH3GLB1", "SETD2", 
"MRPL23", "MCM3", "PPIP5K2", "DNTTIP2", "CCNK", "PDCD2", "ME2", 
"SRPK1", "DPYSL2", "PPA2", "KDM4C", "ZFR", "THUMPD1", "RRM1", 
"NCAPH2", "FBXO11", "TWF2", "RAP2C", "F13A1", "ACLY", "TSPYL1", 
"NGDN", "PCMTD2", "ADSS", "ARHGEF6", "BLOC1S2", "TMEM219", "RASA3", 
"GIGYF2", "CSGALNACT1", "FAM134A", "STRN4", "CKAP5", "ANGEL2", 
"NAAA", "RNF126", "ATIC", "SEC62", "EIF2AK2", "SMYD3", "TOMM22", 
"NAE1", "COPS5"), tpm = c(9.71633333333333, 9.71466666666667, 
9.70866666666667, 9.70633333333333, 9.70233333333333, 9.702, 
9.69866666666667, 9.69766666666667, 9.696, 9.69533333333333, 
9.69366666666667, 9.68833333333333, 9.686, 9.68466666666667, 
9.68433333333333, 9.68433333333333, 9.67666666666667, 9.66233333333333, 
9.657, 9.65666666666667, 9.65366666666667, 9.65333333333333, 
9.652, 9.652, 9.65133333333333, 9.644, 9.64266666666667, 9.63933333333333, 
9.63666666666667, 9.63533333333333, 9.62833333333333, 9.62466666666667, 
9.613, 9.61033333333333, 9.60666666666667, 9.60633333333333, 
9.60533333333333, 9.60166666666667, 9.598, 9.59766666666667, 
9.59033333333333, 9.57733333333333, 9.57633333333333, 9.57466666666667, 
9.565, 9.56333333333333, 9.56066666666667, 9.55866666666667, 
9.55466666666667, 9.54866666666667, 9.54566666666667, 9.544, 
9.54233333333333, 9.53966666666667, 9.53866666666667, 9.53333333333333, 
9.52466666666667, 9.52366666666667, 9.52033333333333, 9.50833333333333, 
9.503, 9.50166666666667, 9.50133333333333, 9.5, 9.49533333333333, 
9.49433333333333, 9.489, 9.48833333333333, 9.485, 9.484, 9.48066666666667, 
9.47966666666667, 9.476, 9.47266666666667, 9.465, 9.46066666666667, 
9.45633333333333, 9.456, 9.44766666666667, 9.447, 9.444, 9.44366666666667, 
9.44366666666667, 9.44333333333333, 9.44033333333333, 9.43633333333333, 
9.42766666666667, 9.42233333333333, 9.421, 9.417, 9.41633333333333, 
9.407, 9.407, 9.40566666666667, 9.40466666666667, 9.39933333333333, 
9.39733333333333, 9.39666666666667, 9.39433333333333, 9.393, 
9.39, 9.38933333333333, 9.38366666666667, 9.38133333333333, 9.38033333333333, 
9.37733333333333, 9.367, 9.357, 9.35633333333333, 9.351, 9.34433333333333, 
9.34233333333333, 9.33833333333333, 9.338, 9.33733333333333, 
9.33633333333333, 9.33333333333333, 9.32933333333333, 9.324, 
9.32233333333333, 9.31833333333333, 9.29966666666667, 9.297, 
9.297, 9.29466666666667, 9.29366666666667, 9.29, 9.28966666666667, 
9.289, 9.28833333333333, 9.28133333333333, 9.27933333333333, 
9.276, 9.27566666666667, 9.27133333333333, 9.26533333333333, 
9.26433333333333, 9.264, 9.26233333333333, 9.26133333333333, 
9.25566666666667, 9.25, 9.25, 9.24133333333333, 9.24066666666667, 
9.24066666666667, 9.23533333333333, 9.23133333333333, 9.22933333333333, 
9.22833333333333, 9.22666666666667, 9.21866666666667, 9.208, 
9.20333333333333, 9.20233333333333, 9.20133333333333, 9.2, 9.19966666666667, 
9.193, 9.188, 9.183, 9.18166666666667, 9.18166666666667, 9.17666666666667, 
9.17633333333333, 9.17633333333333, 9.176, 9.175, 9.16966666666667, 
9.16766666666667, 9.16433333333333, 9.161, 9.15666666666667, 
9.155, 9.14766666666667, 9.14033333333333, 9.137, 9.13466666666667, 
9.129, 9.12733333333333, 9.12633333333333, 9.12266666666667, 
9.12266666666667, 9.112, 9.11066666666667, 9.10833333333333, 
9.09433333333333, 9.092, 9.088, 9.08333333333333, 9.07533333333333, 
9.06766666666667, 9.067, 9.06633333333333, 9.06366666666667, 
9.061, 9.056, 9.056, 9.053, 9.048, 9.04533333333333)), row.names = c(NA, 
-201L), class = c("tbl_df", "tbl", "data.frame"), .Names = c("gene", 
"tpm"))
4

2 回答 2

3

我们也可以在一个进程中做到这一点

e %>%
     slice( {tmp <- which(gene == 'ELF2')
              (tmp-10):(tmp+10)})
于 2017-12-11T09:10:54.650 回答
1

这是在一个单一的声明中:

e[(which(e$gene == "ELF2")-10):(which(e$gene == "ELF2")+10), ]

或者,使用%>%管道运算符:

"ELF2" %>%
  { which(e$gene == .) } %>%
  { e[seq(.-10, .+10), ] }
于 2017-12-11T09:21:26.227 回答