R语言定位向量b中CCN1元素及各a向量中CCN1的索引
R语言查询字符串包含与分割后索引的实现
首先给出你提供的原始数据代码:
a1 <- c("COL8A1/PRG4/DPT/ASPN/PODN/CCN1/BGN/MXRA5/MGP/COL16A1/MFAP5/THBS1/MATN2/AEBP1/MFAP4/SRPX/COL14A1/FGL2/ABI3BP/THBS2/LAMA4/COL8A2/FMOD/CTHRC1/COL12A1/OGN/PRELP/LTBP2/ANOS1") a2 <- c("DPYSL3/CTSG/CCN5/CCN1/BGN/PCOLCE2/SLIT2/CCDC80/RSPO3/CFH/LYVE1/SFRP1/SLIT3/THBS1/SULF1/GPNMB/CCN2/SELP/THBS2/SPOCK2/RSPO1/PRELP/TGFBR3/LTBP2/LPL/HBEGF/ANOS1/NRP2/TGFBR2/CLEC3B/LXN/THBS4/SERPINE2/POSTN") a3 <- c("CTSG/CCN5/CCN1/PCOLCE2/SLIT2/CCDC80/RSPO3/CFH/SFRP1/SLIT3/THBS1/GPNMB/CCN2/SELP/THBS2/RSPO1/PRELP/TGFBR3/LTBP2/LPL/HBEGF/ANOS1/NRP2/CLEC3B/LXN/THBS4/SERPINE2/POSTN/COMP/FBLN7/ECM2/SMOC2/SOD3") a4 <- c("PDLIM3/MYH11/CNN1/SORBS1/FLNC/MYOM1/NEXN/ADD2/MYOZ3/MYLK/TAGLN/SHANK3/SYNE3/GSN/FAM107A/COBLL1/AIF1/LMOD1/TPM2/FLNA/SNCA/SPTBN1/TNNT3/VASH2/GMFG/S100A4/ENC1/KLHL4/WASF3/LMOD3/CORO1C/HCLS1/ABLIM2/TPM1/CALD1/ABLIM3/LIMA1/SVIL/FXYD5/NOS3/TNS1/SMTN/PLS3/MYH10/ENAH/WAS/EPB41L2/PLEC/MYO18A/ANG/MYO1C/MAP1A/MYO1F/EPB41L3/MTSS1/MAP1B/SNTA1/DMD/CNN3/PKNOX2") b <- c(a1,a2,a3,a4)
需求1:查询向量b中包含CCN1的元素
- 实现代码:
# 获取包含CCN1的元素索引 which(grepl("CCN1", b)) # 直接提取包含CCN1的元素值 b[grepl("CCN1", b)]
- 结果说明:返回的索引为1、2、3,对应b中存储的a1、a2、a3三个元素,a4不包含CCN1。
需求2:查询CCN1在a1/a2/a3/a4按/分割后的索引位置
- 实现代码:
# 将四个向量存入列表方便批量处理 vec_list <- list(a1 = a1, a2 = a2, a3 = a3, a4 = a4) # 批量计算每个向量分割后CCN1的索引 sapply(vec_list, function(x) { # 按/分割字符串为独立元素的向量 split_items <- unlist(strsplit(x, split = "/")) # 返回CCN1的索引,不存在则返回空整数向量 which(split_items == "CCN1") })
- 结果说明:返回结果为
a1=6、a2=4、a3=3、a4=integer(0),和你手动核查的结果完全一致。
内容的提问来源于stack exchange,提问作者pengxianglan
相关产品推荐
相关产品推荐

