Unlist 给我一个比预期更长的矢量
Unlist gives me a longer vector than expected
我正在执行 RNA-seq 分析,我需要一个逻辑向量,但是我从一个名为 hk
的 SimpleLogicalList 开始,它有 58037 个元素,我从 hk <- features.info$symbol %in% house_keeping_genes
获得,其中 [=14] =] 是数据框,house_keeping_genes
是向量。
使用 unlist(hk)
后,检索到 58731 个元素。然后我意识到列表的某些部分包含两个以上的元素(而不是仅 FALSE
,它包含 FALSE
FALSE
FALSE
,从而增加了长度结果。
然后我只使用了 unlist(unique(hk))
并且大部分意外变量都被删除了,但是仍然有 58041 个元素而不是 58037,我不知道它们来自哪里。我检查了一下,没有生成 NA
。
我该怎么做才能找到这 4 个额外元素的来源?
> dput(hk[60:70])
new("SimpleLogicalList", elementType = "logical", elementMetadata = NULL,
metadata = list(), listData = list(ENSG00000004777 = FALSE,
ENSG00000004779 = FALSE, ENSG00000004799 = FALSE, ENSG00000004809 = FALSE,
ENSG00000004838 = FALSE, ENSG00000004846 = FALSE, ENSG00000004848 = FALSE,
ENSG00000004864 = FALSE, ENSG00000004866 = c(FALSE, FALSE,
FALSE), ENSG00000004897 = TRUE, ENSG00000004939 = FALSE))
> dput(features.info$symbol[1:5])
new("SimpleCharacterList", elementType = "character", elementMetadata = NULL,
metadata = list(), listData = list(ENSG00000000003 = "TSPAN6",
ENSG00000000005 = "TNMD", ENSG00000000419 = "DPM1", ENSG00000000457 = "SCYL3",
ENSG00000000460 = "C1orf112"))
> dput(house_keeping_genes[1:5])
c("DPM1", "SCYL3", "GCLC", "BAD", "LAP3")
编辑:我需要逻辑向量来将其用作 RUVg()
的参数
函数,如果我写 hk,则会检索到错误:> Error in Ycenter[, cIdx] : invalid subscript type 'S4'
.
套餐:
other attached packages:
[1] NCmisc_1.1.6 RUVSeq_1.28.0 EDASeq_2.28.0 ShortRead_1.52.0
[5] GenomicAlignments_1.30.0 Rsamtools_2.10.0 Biostrings_2.62.0 XVector_0.34.0
[9] snpStats_1.44.0 Matrix_1.4-0 survival_3.2-13 sva_3.42.0
[13] BiocParallel_1.28.3 genefilter_1.76.0 mgcv_1.8-38 nlme_3.1-153
[17] pheatmap_1.0.12 ggfortify_0.4.14 ggplot2_3.3.5 edgeR_3.36.0
[21] limma_3.50.0 dplyr_1.0.7 SummarizedExperiment_1.24.0 GenomicRanges_1.46.1
[25] GenomeInfoDb_1.30.0 IRanges_2.28.0 S4Vectors_0.32.3 MatrixGenerics_1.6.0
[29] matrixStats_0.61.0 tweeDEseqCountData_1.32.0 Biobase_2.54.0 BiocGenerics_0.40.0
问题是某些 symbol
(这是一个 SimpleLogicalList
)包含多个元素,因此我们用 sapply
遍历 list
, 如果 list
元素中的任何元素存在 %in%
'house_keeping_genes,则用 any
which returns 包裹一个 TRUE/FALSE。 \(x)
是 R
最新版本中表示 lambda 函数 (function(x)
) 的简洁方式
hk1 <- sapply(features.info$symbol, \(x)
any(x %in% house_keeping_genes, na.rm = TRUE))
我正在执行 RNA-seq 分析,我需要一个逻辑向量,但是我从一个名为 hk
的 SimpleLogicalList 开始,它有 58037 个元素,我从 hk <- features.info$symbol %in% house_keeping_genes
获得,其中 [=14] =] 是数据框,house_keeping_genes
是向量。
使用 unlist(hk)
后,检索到 58731 个元素。然后我意识到列表的某些部分包含两个以上的元素(而不是仅 FALSE
,它包含 FALSE
FALSE
FALSE
,从而增加了长度结果。
然后我只使用了 unlist(unique(hk))
并且大部分意外变量都被删除了,但是仍然有 58041 个元素而不是 58037,我不知道它们来自哪里。我检查了一下,没有生成 NA
。
我该怎么做才能找到这 4 个额外元素的来源?
> dput(hk[60:70])
new("SimpleLogicalList", elementType = "logical", elementMetadata = NULL,
metadata = list(), listData = list(ENSG00000004777 = FALSE,
ENSG00000004779 = FALSE, ENSG00000004799 = FALSE, ENSG00000004809 = FALSE,
ENSG00000004838 = FALSE, ENSG00000004846 = FALSE, ENSG00000004848 = FALSE,
ENSG00000004864 = FALSE, ENSG00000004866 = c(FALSE, FALSE,
FALSE), ENSG00000004897 = TRUE, ENSG00000004939 = FALSE))
> dput(features.info$symbol[1:5])
new("SimpleCharacterList", elementType = "character", elementMetadata = NULL,
metadata = list(), listData = list(ENSG00000000003 = "TSPAN6",
ENSG00000000005 = "TNMD", ENSG00000000419 = "DPM1", ENSG00000000457 = "SCYL3",
ENSG00000000460 = "C1orf112"))
> dput(house_keeping_genes[1:5])
c("DPM1", "SCYL3", "GCLC", "BAD", "LAP3")
编辑:我需要逻辑向量来将其用作 RUVg()
的参数
函数,如果我写 hk,则会检索到错误:> Error in Ycenter[, cIdx] : invalid subscript type 'S4'
.
套餐:
other attached packages:
[1] NCmisc_1.1.6 RUVSeq_1.28.0 EDASeq_2.28.0 ShortRead_1.52.0
[5] GenomicAlignments_1.30.0 Rsamtools_2.10.0 Biostrings_2.62.0 XVector_0.34.0
[9] snpStats_1.44.0 Matrix_1.4-0 survival_3.2-13 sva_3.42.0
[13] BiocParallel_1.28.3 genefilter_1.76.0 mgcv_1.8-38 nlme_3.1-153
[17] pheatmap_1.0.12 ggfortify_0.4.14 ggplot2_3.3.5 edgeR_3.36.0
[21] limma_3.50.0 dplyr_1.0.7 SummarizedExperiment_1.24.0 GenomicRanges_1.46.1
[25] GenomeInfoDb_1.30.0 IRanges_2.28.0 S4Vectors_0.32.3 MatrixGenerics_1.6.0
[29] matrixStats_0.61.0 tweeDEseqCountData_1.32.0 Biobase_2.54.0 BiocGenerics_0.40.0
问题是某些 symbol
(这是一个 SimpleLogicalList
)包含多个元素,因此我们用 sapply
遍历 list
, 如果 list
元素中的任何元素存在 %in%
'house_keeping_genes,则用 any
which returns 包裹一个 TRUE/FALSE。 \(x)
是 R
function(x)
) 的简洁方式
hk1 <- sapply(features.info$symbol, \(x)
any(x %in% house_keeping_genes, na.rm = TRUE))