使用 for 循环生成绘图标题时包含零
Inclusion of zeros while generating plot titles with for loop
我正在尝试绘制不同状态 (0-3) 之间的频率与转换次数的关系图。但是,在包含状态 "zero" 的那些图中,我得到了空图。将州等级更改为 1-4 解决了空地块的问题,但因此地块标题不正确。我看到 this 线程,其中声明循环可以从零开始。有什么解决方法可以避免这些空地块吗?
代码如下:
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)
}
}
提前致谢!
问题是您起诉 from
和 to
作为索引号,而在 R 中索引 0 不存在,使用 from
和 to
作为row/column name 你应该将它们用作字符,
如果将定义 foo
的行更改为以下
,它应该可以工作
foo <- transition_table[as.character(from), as.character(to), ]
我正在尝试绘制不同状态 (0-3) 之间的频率与转换次数的关系图。但是,在包含状态 "zero" 的那些图中,我得到了空图。将州等级更改为 1-4 解决了空地块的问题,但因此地块标题不正确。我看到 this 线程,其中声明循环可以从零开始。有什么解决方法可以避免这些空地块吗?
代码如下:
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)
}
}
提前致谢!
问题是您起诉 from
和 to
作为索引号,而在 R 中索引 0 不存在,使用 from
和 to
作为row/column name 你应该将它们用作字符,
如果将定义 foo
的行更改为以下
foo <- transition_table[as.character(from), as.character(to), ]