Iのような、いずれかの含有1, -1 or 0
値遺伝子マトリックスによってサンプル、あるデータフレームmat
を有する:データフレーム内の列名を別のデータフレームと照合して値を取得し、その値を使用して追加の値を計算する方法を教えてください。
GeneName Score
Gene1 0.5
Gene2 0.3
Gene3 0.2
Gene4 0.6
Gene5 0.7
Gene6 0.1
Gene7 0.4
:
Gene1 Gene2 Gene5 Gene7
Sample1 1 0 -1 1
Sample2 0 -1 0 1
Sample3 -1 0 1 1
Sample4 1 1 0 0
別のデータフレームをscore
のようなすべての遺伝子についての対応するスコアを含み、
私がしようとしているのは、式に基づいていくつかのスコアを含むmat
の新しい列を取得することです。式は、各列について
、Gene1
+ mat[1,2]
のmat[1,1]
*スコア* Gene2
+ mat[1,3]
のスコア* Gene7
のGene5
+ mat[1,4]
*値のスコア。 mat
のすべての行で同じです。
例えば、与えられたデータの最初の行のために、Sample1
についての結果は次のようになります。これはダム問題である
(1*0.5) + (0*0.3) + (-1*0.7) + (1*0.4) = 0.2
申し訳ありません場合。私はRの新人で、まだ%in%
、match
、merge
のようなものに取り組んでいます。現在の状態であなたのデータを考えると
データ
mat <- structure(list(Gene1 = c("1", "0", "-1", "1"), Gene2 = c("0", "-1", "0", "1"), Gene5 = c("-1", "0", "1", "0"), Gene7 = c("1", "1", "1", "0")), class = "data.frame", row.names = c("Sample1", "Sample2", "Sample3", "Sample4"))
score <- structure(list(GeneName = c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5", "Gene6", "Gene7"), Score = c("0.5", "0.3", "0.2", "0.6", "0.7", "0.1", "0.4")), class = "data.frame", row.names = c(NA, -7L))
!完璧に動作します!私は私が推測するこの 'apply'関数についてもっと研究する必要があります。非常に便利で速いのようです。 –
'apply'は通常、他の多くのメソッドよりも低速ですが、行列(またはdata.frames)に対して行操作を行う必要がある場合に便利です。この特定の問題に対する最速の解決策は、特に行列から始める場合は、超高速Fortranライブラリを使用するため、行列の乗算方法になります。 – lmo