2013-08-17 2 views
0

У меня есть dataframe из 1200 зондов (в строках) и двух наборов массивов по девять столбцов каждый. Первые девять столбцов называются «положительными», а следующие девять - «отрицательными». Я хочу показать, что выражение является нормальным, выбирая 12 случайных зондов, используя график. Мой код выглядит следующим образом:Как создать коробку из нескольких строк?

f<-c(rep("positive", 9), rep("negative", 9)) 
for(i in seq(from=1, to=1200, by=10)){ 
    boxplot(probes[i]~f,col="lightblue",main="Expression of genes studied Cells") 
} 

Но я получаю следующее сообщение об ошибке:

Error in model.frame.default(formula = probes[i] ~ f) : 
    variable lengths differ (found for 'f') 

Если я использую коробки участок для одного зонда он работает нормально. Я получаю две коробки, одна соответствующая «положительным», а другой на «негативный»:

f<-c(rep("positive", 9), rep("negative", 9)) 
genex<-as.numeric(dat.fp.labeled["NM_139321.1_psr1_at",]) 
boxplot(genex~f,col="lightblue",main="Expression of NM_139321.1_psr1_at samples") 
+0

могли бы вы предоставить более подробную информацию о структуре ваши данные? Является ли 'пробник' вектором? Если нет, то вы неправильно индексируете его при вызове 'boxplot'. Кроме того, ваш текущий код создаст 120 ящиков, но я не думаю, что это то, что вы хотите сделать ... – Thomas

+0

Возможный дубликат [нескольких ящиков, сгруппированных по двум условиям] (http://stackoverflow.com/questions/13124827/ multiple-boxplots-grouped-by-two-conditions) – Metrics

+0

Это dataframe, содержащий 1200 строк и 18 столбцов. 18 столбцов имеют два типа. Первые 9 названы «положительными», а следующие 9 названы «отрицательными». Если я делаю это для одной строки, он отлично работает, создавая по два ящика для каждого из них для позитивных и отрицательных. Код: есть: f <-c (rep («положительный», 9), rep («отрицательный», 9)) genex <-as.numeric (dat.fp.labeled ["NM_139321.1_psr1_at",]) boxplot (genex ~ f, col = "lightblue", main = "Выражение образцов NM_139321.1_psr1_at") – user2649495

ответ

0

Это, я думаю, это то, что вы хотите:

set.seed(1) 
probes <- data.frame(matrix(rnorm(1200*18),ncol=18)) 
f<-c(rep("positive", 9), rep("negative", 9)) 
myrows <- sample(1:1200,12,FALSE) 
boxplot(unlist(probes[myrows[1],])~f) # first plot 
for(i in myrows){ 
    boxplot(unlist(probes[i,])~f) 
    Sys.sleep(1) # wait for each plot for 1 sec 
} 
+0

Привет, Томас, Спасибо за образец кода. У меня вопрос: где я буду помещать свои данные? В вашем коде вы создаете кадр данных, зонды. Скажем, мои данные находятся в кадре данных с именем data.fp, где я могу добавить код? Спасибо – user2649495

+0

Внутри цикла for, где говорится 'unlist (probes [i,])'. Если вы измените это на 'unlist (data.fp [i,])', я думаю, вы должны получить предполагаемый результат. – Thomas

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