古詩詞大全網 - 成語解釋 - R語言 | 多組樣本的N種組合-embed函數-embed函數用法大

R語言 | 多組樣本的N種組合-embed函數-embed函數用法大

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)