2014-11-14 3 views
0

Я пытаюсь определить некоторые параметры для последовательности моей оси y в цикле построения baseR. Я пытаюсь добиться этого с помощью if else заявления, в котором я определяю метки осей как этогоR: инструкция ifelse и параметры функции seq()

if(any(y < 100000 & y > -100000)){plotlabels <- c(-20000000, 20000000, 10000)} else {plotlabels <- c(-20000000, 20000000, 1000)} 

затем приходит петля участка и после этого я звоню в axis() команду для оси у, как это

axis(2, at = seq(plotlabels), cex.axis=1, labels=TRUE, tcl=-0.3) 

Но это не будет работать правильно, так как я получаю вектор с помощью c() для plotlabels и если я распечатать результат я получаю следующее

seq(plotlabels) 
[1] 1 2 3 

Как я могу изменить оператор if else, чтобы получить правильные параметры последовательности в соответствии с оператором if else (-20000000, 20000000, 10000 или -20000000, 20000000, 1000)?

+0

Заявление 'у> 100000 и у <-100000' никогда не будет правдой. –

+0

О, извините, это была типичная ошибка здесь (я ее изменил). однако я по-прежнему получаю тот же результат для plotlabels ... – kurdtc

ответ

0

Если вы используете seq с вектором с не менее чем двумя элементами, функция вернет числа от одной до длины вектора.

vec <- c(-10, 10, 2) 
seq(vec) 
# [1] 1 2 3 

Вы можете использовать один из следующих подходов, чтобы получить правильную последовательность:

seq(vec[1], vec[2], vec[3]) 
# [1] -10 -8 -6 -4 -2 0 2 4 6 8 10 

do.call(seq, as.list(vec)) 
# [1] -10 -8 -6 -4 -2 0 2 4 6 8 10 
Смежные вопросы