2015-03-20 4 views
1

Я хочу знать, как создать автоматизированную последовательность от 0 до 100, с числами только по 5 позиций, все остальные должны быть значениями NA. В конце концов, я хотел бы иметь что-то вроде этого:Как сгенерировать последовательность, включая значения NA в R?

> labCol 
[1] 0 NA NA NA NA 5 NA NA NA NA 10 NA NA NA NA 15 NA ..... 100 

Я сделал этот пример вручную, как это, но это отнимает много времени:

labCol <- c(0, NA, NA, NA, NA, 5, NA, NA, NA, NA, 10, NA, NA, NA, NA, 15, NA, ... 100) 

Я не могу найти вариант в seq() функция для этого.

Эта проблема связана с тем, что я делаю тепловую карту с функцией heatmap.2() пакета gplots, а метки столбцов находятся слишком близко к чтению. Я также не могу устанавливать метки каждые 5 или 10 позиций. Вот почему мне нужно создать свою собственную последовательность меток с значениями NA, чтобы избежать этого перекрытия.

Любое предложение приветствуется :)

ответ

5

Попробуйте это:

labCol <- seq(0, 100, 1) 
labCol[labCol %% 5 != 0] <- NA 

Это создает последовательность от 0 до 100 на 1, то просто устанавливает все значения последовательности не делится на 5, чтобы NA.

+0

благодаря @Alex A. это работает !! прошу простить мое невежество, но что означает '%%' и '! = 0'? –

+4

Modulo арифметики. –

+1

@DarwinPC: Как упоминалось в BondedDust, '%%' получает [модуль] (http://en.wikipedia.org/wiki/Modulo_operation), т. Е. Остаток после целочисленного деления. Для любого числа, не делящегося на 5, остаток будет отличным от нуля, поэтому мы можем установить эти случаи в 'NA'. '! = 0' означает не равную 0. –

1

Вы также можете создать NA вектор, а затем заполнить элементов

labCol <- rep(NA,100) 
labCol[seq(1,101, 5)] <- seq(0,100,5) 
labCol 
#[1] 0 NA NA NA NA 5 NA NA NA NA 10 NA NA NA NA 15 NA NA 
#[19] NA NA 20 NA NA NA NA 25 NA NA NA NA 30 NA NA NA NA 35 
#[37] NA NA NA NA 40 NA NA NA NA 45 NA NA NA NA 50 NA NA NA 
#[55] NA 55 NA NA NA NA 60 NA NA NA NA 65 NA NA NA NA 70 NA 
#[73] NA NA NA 75 NA NA NA NA 80 NA NA NA NA 85 NA NA NA NA 
#[91] 90 NA NA NA NA 95 NA NA NA NA 100 

 Смежные вопросы

  • Нет связанных вопросов^_^