2016-05-17 2 views
0

Я новичок в R, поэтому, пожалуйста, подумайте об этом, исследуя мои, по-видимому, неистребимые попытки решения проблем.Этикетки для матрицы Scatterplot в R

Данные, которые я использую, основаны на поведенческом психологическом исследовании. У меня есть кадр данных, содержащий 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" 

Теперь мне нужно сделать bivaraite диаграммы рассеяния, которые содержат один единственный параметр, но каждой задачи, поэтому я хочу, чтобы сделать матрицу 3x3 диаграмму рассеяния (например .: a.DelayedNMatchingFaces, a.MorphFaces, a.verificFaces). Эта матрица будет сохранена в png, которая называется в соответствии с параметром и типом стимула (например, «a_H.png», если это параметр a для домашних стимулов). Я построил цикл for, который проходит через столбцы и строит диаграмму рассеяния матрицы переменной из столбца i, столбец i+12 и столбец i+24, поскольку каждый параметр появляется каждые 12-й шаг в строке заголовка. Цикл выглядит следующим образом:

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] (Смотри ниже). Однако предполагается, что графики должны быть помечены в соответствии с именами столбцов, поэтому, когда вы смотрите на них, вы можете увидеть, какая переменная отображается и с какой графикой отображается. Существует аргумент, который называется var.label s, я уже это видел, но я просто не могу понять, как его назвать на каждом графике, потому что индексы col_ix, i и j являются номерами и не могут быть указаны все три 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