Включение нулей при создании заголовков сюжета с циклом for - PullRequest
1 голос
/ 05 марта 2019

Я пытаюсь построить график зависимости частоты от количества переходов между различными состояниями (0-3). Тем не менее, я получаю пустые участки в тех, где включено состояние "ноль". Изменение оценок состояния на 1-4 решает проблему пустых графиков, но, следовательно, названия графиков неверны. Я видел этот поток, где указано, что цикл может начинаться с нуля. Есть ли способ избежать этих пустых участков?

Вот код:

n_IDs <- 150
TIME <- 0:100
set.seed(1)
(markov <- data.frame(ID=rep(1:n_IDs,each=length(TIME)),
                      TIME=rep(TIME,n_IDs),
                      STATE=sample(0:3,n_IDs*length(TIME),replace=TRUE)))

transitions <-  data.frame(ID=head(markov$ID,-1),
TIME=tail(markov$TIME,-1),FROM=head(markov$STATE,-1),TO=tail(markov$STATE,-1))

transition_table <- with(transitions,table(FROM,TO,ID))
min_n_transitions <- min(unlist(transition_table))
max_n_transitions <- max(unlist(transition_table))
max_freq <- 50  

par(mfrow=rep(4,2),mai=c(.3,.3,.3,.1))
for ( from in 0:3 ) {
  for ( to in 0:3 ) {
    foo <- transition_table[from,to,]
    hist(foo,freq=TRUE,
         breaks=seq(min_n_transitions-.5,max_n_transitions+0.5),
         xlim=c(min_n_transitions,max_n_transitions),
         ylim=c(0,max_freq),xlab="",ylab="",
         main=paste("From",from,"to",to),
         las=1,col="lightgray")
    mtext('Number of transitions', side = 1, outer = TRUE, line = 2)
    mtext('Frequency', side = 2, outer = TRUE, line = 1.5)

  }
}

Заранее спасибо!

1 Ответ

0 голосов
/ 05 марта 2019

Проблема в том, что вы используете from и to в качестве номера индекса, а в R индекс 0 не существует, чтобы использовать from и to в качестве имени строки / столбца, вы должны использовать их в качестве символов, он должен работать, если вы измените строку, в которой вы определяете foo, на следующую

foo <- transition_table[as.character(from), as.character(to), ]

...