2014-10-19 2 views
1

Я произвел Heatmap в R для данных микробиома, используя следующие linkГруппировка несколько строк в R

Моих данных, насколько строки обеспокоенные выглядит следующим образом:

781 
782 
783 
547 
519 
575 
044 
045 
049 

Если я хочу к группе 781-783, 547-575 и 044-049 в виде отдельных групп и дать им отдельные цвета, используя приведенную ниже идею:

Назначение животных к различным группам (2 случайных групп в данном случае)

var1 <- round(runif(n=12, min=1, max=2)) 
var1 <- replace (var1, which(var1 == 1), "deepskyblue") 
var1 <- replace (var1, which(var1 == 2), "magenta") 
cbind(row.names(data.prop), var1) 

Как это сделать? Я понимаю, что приведенный выше код случайно генерирует 2 группы, но как я могу указать, какие строки входят в какую группу?

Спасибо,

Susheel

+0

Можете ли вы уточнить свой вопрос? Ваши данные недостаточны, и общая логика (3 неслучайные группы по сравнению с биномиальной случайной выборкой) немного нечеткая. – won782

ответ

1

Поскольку rownames является необходимость характера и только хороший диапазон-оператор R является «:» для числовых значений: вы должны принуждать диапазоны в нужном формате "0nn". Это непроверено в отсутствие надлежащего тестового примера (о том, что задают вопросы):

#look at... 
sprintf("%03i", c(781:783, 547:575, 044:049)) 
# then.... 

data.prop[ sprintf("%03i", c(781:783, 547:575, 044:049), 'var1'] <- 
     mapply(function(clr, rng) {rep(clr, length(rng))}, 
        c("deepskyblue", "magenta", "green"), 
        list( 781:783, 547:575, 44:49) 
      ) 
+0

Спасибо за звонок 'sprintf'. Вы просто научили меня новому способу заполнения строк с помощью '0'. –

+0

Обычными способами являются либо 'sprintf', либо' formatC'. Оба имеют свои причуды. Мне посчастливилось найти «sprintf», чтобы работать правильно, но другие, похоже, легче находят формат. Твой выбор. –

+0

Ну, в частности, я имел в виду «% i», но теперь я вижу, что он почти такой же, как «% d». Чтение справки У меня возникли проблемы с расшифровкой разницы –

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