2016-05-17 14 views
0

私はRが初めてのため、おそらく不思議な問題解決の試みを検討するときにこれを検討してください。散布図マトリックスのラベルR

私が使用しているデータは、行動心理学の研究から来ています。私は3つの異なる行動課題から6つの異なるパラメータ(mu、sigma、tau、v、a、Terと呼ばれる)を含むデータフレームを持っています。さらに、2つの刺激タイプ、顔と家の写真があります。 colnames(plot_data)は、次のことを得られます。

[1] "subject"      "v.DelayedNMatchingFaces"  
[3] "a.DelayedNMatchingFaces"  "Ter.DelayedNMatchingFaces" 
[5] "mu.DelayedNMatchingFaces"  "sigma.DelayedNMatchingFaces" 
[7] "tau.DelayedNMatchingFaces" "v.DelayedNMatchingHouses"  
[9] "a.DelayedNMatchingHouses"  "Ter.DelayedNMatchingHouses" 
[11] "mu.DelayedNMatchingHouses" "sigma.DelayedNMatchingHouses" 
[13] "tau.DelayedNMatchingHouses" "v.MorphFaces"     
[15] "a.MorphFaces"     "Ter.MorphFaces"    
[17] "mu.MorphFaces"    "sigma.MorphFaces"    
[19] "tau.MorphFaces"    "v.MorphHouses"    
[21] "a.MorphHouses"    "Ter.MorphHouses"    
[23] "mu.MorphHouses"    "sigma.MorphHouses"   
[25] "tau.MorphHouses"    "v.verificFaces"    
[27] "a.verificFaces"    "Ter.verificFaces"    
[29] "mu.verificFaces"    "sigma.verificFaces"   
[31] "tau.verificFaces"    "v.verificHouses"    
[33] "a.verificHouses"    "Ter.verificHouses"   
[35] "mu.verificHouses"    "sigma.verificHouses"   
[37] "tau.verificHouses" 

今、私は1つのパラメータが含まれているbivaraite散布を行う必要がありますが、各タスクの、私は3x3の散布図(例えば:a.DelayedNMatchingFacesa.MorphFacesa.verificFacesを)やりたいです。この行列は、パラメータと刺激タイプに基づいて命名されたpngに保存されます(例:家の刺激のパラメータaの場合は "a_H.png")。私は、各パラメータがヘッダー行の12番目のステップごとに表示されるため、列を通過するforループを構築し、列i、列i+12および列i+24からの変数の行列をscatterplotで構築します。私はより効率的にそれを行うための千個の方法がなければならないことを認めるものの

for (col_ix in 2:13) { 

    i <- col_ix + 12 
    j <- col_ix + 24 

    param_col <- colnames(plot_data)[col_ix] 
    param <- strsplit(param_col,"[.]")[[1]][1] 

    if (grepl("Faces", colnames(plot_data)[col_ix]) == TRUE) { 
    stim_col <- "F" 
    } 
    else { 
    stim_col <- "H" 
    } 

    png(paste(param, stim_col, ".png", sep="_")) 
    scatterplotMatrix(~ plot_data[ ,col_ix] + plot_data[ ,i] + plot_data[ ,j] , span=0.7, data= plot_data) 
    dev.off() 

} 

これは、動作しているようですが、ちょっと、それは実際に、私の最初のRループです:次のようにループが見えます。問題は次のとおりです。散布図の行列をpngファイルとして保存すると、pngに表示されるプロットは、数式に示されているデータソースに従ってラベル付けされるため、plot_data[col_ix],plot_data[i]およびplot_data[j]となります下記参照)。しかし、プロットは列名に従ってラベル付けされているので、それらを見るとどの変数が表示され、どれがプロットされているかを見ることができます。引数がありますが、私は既にそれを見ましたが、指標番号col_ixijは実行中の数値であり、すべての項目がvar.labels引数。

誰でも手助けできますか?提案は大きく評価されます(また、変数ラベルに直接リンクされていないアドバイスが含まれている場合もあります)。私の説明がプロフェッショナルではない、または特定の用語を正しく使用していないと謝罪します。うまくいけばすべてが理解できた。もっと情報が必要な場合は、教えてください。

皆さん、ありがとうございました。

+1

'xlab'と' ylab'を見てください。ループのラベルの変更は、 'ylab = names(plot_data)[j]'のように自動化することができます。ループを実行する前に最初の列を見て周りを見て回る価値があるかもしれません。 – lmo

+0

ありがとう!しかし、これらはプロットのx軸とy軸にラベルを付けるコマンドです。私は行列pngの診断プロットにラベルを付けることを試みています。イメージには、データソースの名前が表示されます。このソースは 'plot_data [、col_ix]'、 'plot_data [、i]'と 'plot_data [、j]'なので、これは画像に現れるテキストですが、変数名を表示します。 'var.labels'は正しい選択であると思われますが、入力として1つ以上の値(またはリストまたはベクトル、私が見る限り)は許されません。しかし、私はあなたのコメントを誤解したか、あまりにも 'var.labels'オプションに固執していますか? – Yagaba

+0

申し訳ありませんが、私はあなたの質問を誤解しました。できるだけ短くてシンプルにしておく方がいいです。なぜなら、人々は質問をすばやくスキャンするからです。私の答えを見てください。 – lmo

答えて

0

次のようにあなただけのIJとcol_ixに関連付けられている名前を使用することができます。

plot_data[ , names(plot_data)[col_ix]] + plot_data[ ,names(plot_data)[i]] 
    + plot_data[, names(plot_data)[j]] 

これはすぐにあなたの望ましい結果が得られないかもしれないが、あなたはvar.labelsの名前を取得するために同じ方法を使用することができます:

var.labels= c(names(plot_data)[i], names(plot_data)[j]) 

または正確な構文は何でも。私は、このパッケージをインストールしていないが、これはあなたにかなり近づくはずです。

+0

助けてくれてありがとう、これは完全に働いた!すばらしいです :) – Yagaba