r语言combn函数在python中是什么

Python015

r语言combn函数在python中是什么,第1张

itertools.product。

r语言combn函数是一种排列组合的函数,python中排列组合的函数是itertools.product(sequence,repeat)。

combn只是给出所有可能的组合情况,按原数据的顺序排列的。

x<-c(1,2,3,4,5)combn(x,3)

就变成123,124,125.......以此类推

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)