【发布时间】:2020-02-23 01:35:19
【问题描述】:
我想用 1212 过滤数据框,因此它只包含单独列表中列出的样本。该列表有多个值,我不知道该怎么做。
下面的df叫做RNASeq2
RNASeq2Norm_samples Substrng_RNASeq2Norm
1 TCGA-3C-AAAU-01A-11R-A41B-07 TCGA.3C.AAAU
2 TCGA-3C-AALI-01A-11R-A41B-07 TCGA.3C.AALI
3 TCGA-3C-AALJ-01A-31R-A41B-07 TCGA.3C.AALJ
4 TCGA-3C-AALK-01A-11R-A41B-07 TCGA.3C.AALK
5 TCGA-4H-AAAK-01A-12R-A41B-07 TCGA.4H.AAAK
6 TCGA-5L-AAT0-01A-12R-A41B-07 TCGA.5L.AAT0
7 TCGA-5L-AAT1-01A-12R-A41B-07 TCGA.5L.AAT1
8 TCGA-5T-A9QA-01A-11R-A41B-07 TCGA.5T.A9QA
.
.
.
1212
列表 = intersect_samples
intersect_samples: "TCGA.3C.AAAU" "TCGA.3C.AALI" "TCGA.3C.AALJ" "TCGA.3C.AALK" ... 1097
我已经尝试过这段代码,但返回了所有原始的 1212 个样本:
RNASeq_filtered <- RNASeq2[RNASeq2$Substrng_RNASeq2Norm %in% intersect_samples,]
如果我尝试
RNASeq_filtered <- RNASeq2[RNASeq2$Substrng_RNASeq2Norm %in% "TCGA.3C.AAAU",]
它将返回正确的行
str(RNASeq2)
'data.frame': 1212 obs. of 2 variables:
$ RNASeq2 : Factor w/ 1212 levels "TCGA-3C-AAAU-01A-11R-A41B-07",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Substrng_RNASeq2Norm: Factor w/ 1093 levels "TCGA.3C.AAAU",..: 1 2 3 4 5 6 7 8 9 10 ...
str(intersect_samples)
chr [1:1093] "TCGA.3C.AAAU" "TCGA.3C.AALI" "TCGA.3C.AALJ" "TCGA.3C.AALK" "TCGA.4H.AAAK" ...
【问题讨论】:
-
欢迎来到 SO!您能否将
str(df)和str(intersect_samples)的输出添加到您的问题中以向我们展示数据类型? THX :-) -
恐怕我无法复制这个问题。
RNASeq2[RNASeq2$Substrng_RNASeq2Norm %in% intersect_samples,]返回预期的子集。 -
match的第二个参数(%in%之后的表达式)必须是向量,而不是列表,所以如果你使用列表unlist(intersect_samples)可能会给你一个向量 -
RYoda 可能正在做点什么。我用
intersect_samples <- c("TCGA.3C.AAAU", "TCGA.3C.AALI", "TCGA.3C.AALJ", "TCGA.3C.AALK")。 -
RNASeq2[RNASeq2$Substrng_RNASeq2Norm %in% intersect_samples,]将适用于短列表,但是当intersect_samples大约为 200 长时,它返回 207 行,当它为 1093 长(即全长)时,它返回 1212,即它不会过滤掉任何东西
标签: r string filter rows string-matching