R语言 | 多组样本的N种组合-embed函数-embed函数用法大

embed函数 R语言 多组样本的N种组合对于单个基因在多个样本组中的差异表达,通常使用方差分析,即,将多个组比较在一起以获得P值。如果p

embed函数 R语言 多组样本的N种组合

对于单个基因在多个样本组中的差异表达,通常使用方差分析,即,将多个组比较在一起以获得P值。如果p值显著,说明多组基因表达有显著差异。然而,我们不能知道两组之间或两组之间的基因表达是否有显着性差异,因此我们需要细化分组,此时,我们需要使用排列和组合!

在R语言中,可以使用 combn() 函数从一个向量中获得所有可能的元素组合:

(All combinations of X elements of M are generated at one time).

例如,我们现在有4种Stage分期,现在要得到所有可能的两两组合,以进行差异表达分析:

labels = c(“I“, “II“, “III“, “IV“)

res = t(combn(labels, 2))

res

[,1] [,2]

[1,] “I“ “II“

[2,] “I“ “III“

[3,] “I“ “IV“

[4,] “II“ “III“

[5,] “II“ “IV“

[6,] “III“ “IV“

可见,两两一组共有6种可能,需要在每种可能的组合内进行两组间差异表分析!如果此时你已经写好了一个名为 limma_dea() 的差异表达分析函数,则可以很方便的在 combn 内部调用该函数:

combn(labels, 2, FUN = limma_dea)

如果只想取某位与其相邻下一位的组合:

p_load(gtools)

index = combinations(length(labels), 2) # 返回的是下标

res[index[,2] == index[,1]+1,] # 基于满足条件的下标取原数据子集

[,1] [,2]

[1,] “I“ “II“

[2,] “II“ “III“

[3,] “III“ “IV“

不过,有更加简单的实现方式, embed 函数:

Results each row of the matrix consists of sequences x [t] and x [t-1]...,

X [t-dimension + 1],

where t is the original index

of X.

comps = embed(labels,2)[,2:1]

但是,由于 embed 没有调用函数的接口,所以可以使用 lapply 函数:

my_comparisons = lapply(1:nrow(comps), function(x) comps[x,])

lapply(my_comparisons, limma_dea)

# 或者

lapply(split(comps, 1:nrow(comps)), limma_dea)

温馨提示:答案为网友推荐,仅供参考
相似回答