Насколько я мог прочитать из вашего кода, вы пытаетесь связать возможный пустой объект, который никогда не работает.Это также то, что говорит вам ошибка.Возможно, в какой-то момент a
просто пусто, поскольку совпадений нет.Так что просто добавьте условие
if(sum(id) !=0) { ... }
Вы можете получить много пользы от переписывания кода, чтобы учесть это.Я попытался угадать, что вы хотели сделать, и этот код делает то же самое:
xx <- apply(outcomes,1,function(p){
id <- apply(regulationtable,1,function(i)
sum(i != p ) == 0)
if(sum(id) !=0)
cbind(as.data.frame(id[id]),t(p))
})
write.table(do.call(rbind,xx),file="file")
Он возвращает вам список хх с, для каждого возможного результата, генами, которые имеют один и тот же регуляторный шаблон.Это проверено с:
outcomes <- expand.grid(c(0,1),c(0,1),c(0,1),c(0,1))
regulationtable <- data.frame(
t1=sample(0:1,10,replace=T),
t2=sample(0:1,10,replace=T),
t3=sample(0:1,10,replace=T),
t4=sample(0:1,10,replace=T)
)
rownames(regulationtable) <- paste("Gene",1:10,sep="-")