![](/img/trans.png)
[英]Plotting a 1x1 contingency table returns “Error in rep.int(0, ydim) : invalid 'times' value”
[英]How to plot a mosaicplot for a 1x1 contingency table?
繪制 1×1 列聯表會返回錯誤:
dat <- read.table(textConnection('
foo bar
TRUE TRUE
TRUE TRUE
'), header = TRUE, colClasses=c('logical', 'logical'))
mosaicplot(table(dat))
Error in rep.int(0, ydim) : invalid 'times' value
據我所知,馬賽克圖 function 中的代碼不允許 plot 1×1 表。 但是,我如何plot 該表的馬賽克圖?
背景。
我正在繪制一系列動態創建的表,其中一些有時恰好只有一列和一行,有時它們有更多維度。 在這一系列馬賽克圖中有一個不可分割的矩形是有價值的信息,並且在該視覺表示中很容易掌握。
如果您不想要@Henrik的(太好了! )解決方案的細線,您可以用自定義 plot function 替換一維案例。
mpOneDim <- function(tbl, title="table(dat)") {
dn <- attr(tbl, "dimnames")
labs <- names(dn)
levels <- unlist(dn)
plot.new()
rect(0.0125, -.035, .985, .99, col="gray", border=1)
mtext(title, line=1.55, font=2, cex=1.2)
mtext(labs[1], 1, 1)
mtext(labs[2], 2, 1)
mtext(levels[2], 2, -1.15, cex=.7)
mtext(levels[2], 3, -.75, cex=.7)
}
mpOneDim(table(dat))
在您的 function 中執行以下操作:
if (sum(dim(table(dat))) <= 2) {
mpOneDim(table(dat))
} else {
mosaicplot(table(dat))
}
數據:
dat <- structure(list(foo = c(TRUE, TRUE), bar = c(TRUE, TRUE)), class = "data.frame", row.names = c(NA,
-2L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.