1
私は以下のようなデータセットを持っています。R - 列サブセット間の相関 - 現在の参照行
name Exp1Res1 Exp1Res2 Exp1Res3 ExpRes1 Exp2Res2 Exp3Res3
[1] ID1 5 7 9 7 9 2
[2] ID2 6 4 2 9 5 1
[3] ID3 4 9 9 9 11 2
各行の実験1と2の相関関係を調べる必要があります。私のデータセット(FullSet)に実際に37列と100000行があるので、私のオリジナルのループスルーの解決策は非常に遅いです(下記参照)。私は最適化したかったのです。
私の元の解決策は、
df <- data.frame(matrix(ncol = 5, nrow = dim(FullSet)[1]))
names(df)<-c("ID","pearson","spearman")
for (i in seq(1, dim(FullSet)[1]))
{
pears=cor(as.numeric(t(FullSet[i,2:19])),as.numeric(t(FullSet[i,20:37])), method="pearson")
spear=cor(as.numeric(t(FullSet[i,2:19])),as.numeric(t(FullSet[i,20:37])), method="pearson")
df[i,]<-c(FullSet[i,1],pears,spear)
}
私はこれがうまくいくと感じます。
FullSet$pearson<-cor(as.numeric(t(FullSet[,2:19])),as.numeric(t(FullSet[,20:37])), method="pearson")
が、転置でちょうど現在の行を参照するように/どの場合、私は知らない -
t(FullSet[,2:19]) - which should read something like t(FullSet[<currow>,2:19]).
ヘルプは高く評価されるだろう - 私のアプローチはしても正しいかどうかはわかりません。
出力(結果が正しくない - 例のみのため)のようになります
name Pearson Spearman
[1] ID1 0.8 .75
[2] ID2 0.9 .8
[3] ID3 0.85 .7
私はこれが答えとしてマークされています。これは代替であり(ちょうど溶けていますが)、ループメソッドより速くはありません。 – statler