2016-08-15 2 views
1

Когда я добавляю несколько строк к сюжету, код взрывается следующим образом.Упростить код plot() в R

plot_pch = 16 
plot_ltya = 'solid' 
plot_ltyb = 'dotted' 

plot(df[cond1, 'field'], 
    type='o', 
    pch=plot_pch, 
    plot_ltya) 
lines(df[cond2, 'field'], 
     type='o',  
     pch=plot_pch, 
     lty=plot_ltya) 
lines(df[cond3, 'field'], 
     type='o',  
     pch=plot_pch, 
     lty=plot_ltya) 
lines(df[cond4, 'field'], 
     type='o',  
     pch=plot_pch, 
     lty=plot_ltyb) 
lines(df[cond5, 'field'], 
     type='o',  
     pch=plot_pch, 
     lty=plot_ltyb) 

Есть ли способ упростить это с помощью глобальных настроек?

setglobal(pch=plot_pch) 
+2

'номинальных() $ pch', проверить' пара() ' – bouncyball

+0

Есть несколько способов это можно сделать? более эффективным, но трудно рекомендовать правильное решение, не зная немного больше. Каковы ваши данные на самом деле? Что теперь производят эти команды построения? – jdobres

+0

@bouncyball Пожалуйста, измените это на ответ. Это именно то, что я имел в виду! Спасибо. – buhtz

ответ

1

Если вы хотите изменить графический параметр (например, pch) для остатка в R сессии вы можете сделать следующее:

plot_pch <- 16 
par(pch = plot_pch) 

После установки pch значения, еще один способ, чтобы упростить этот вызов будет использовать mapply функции:

plot(df[cond1, 'field'], 
    type='o', 
    pch=plot_pch, 
    lty = 'solid') 

mapply(function(df, lty) lines(df, type = 'o', lty = lty), 
df = list(df[cond2, 'field'], df[cond3, 'field'], 
      df[cond4, 'field'], df[cond5, 'field']), 
lty = rep(c('solid','dotted'), each = 2)) 
+0

btw: 'par (...)' не работает для 'legend()'. – buhtz

2

вы могли бы сделать вашу собственную функцию

mylines <- function(cond){ 
    lines(df[cond, 'field'], 
    type='o', 
    pch=plot_pch, 
    lty=plot_ltya) 
} 

plot(df[cond1, 'field'], 
    type='o', 
    pch=plot_pch, 
    lty=plot_ltya) 
mylines(cond2) 
mylines(cond3) 

и т.д.