мозаика()-функция пакета vcd: ошибка добавления текста в ячейки

Я создал мозаику, используя функцию mosaic в пакете vcd. Теперь я хочу добавить некоторые аннотации, используя labeling_cells. К сожалению, я получаю сообщение об ошибке. Проблема может заключаться в том, что это не стандартный пример Titanic...

library("grid"); library("vcd")
dataset <- read.table("http://bit.ly/1aJTI1C")

# prepare data for plot as a "Structured Contingency Table"
data1 <- structable(dauer ~ groesse + ort, dataset) 

# basic plot
mosaic(data1,
       # separate the two elements of the plot  
       split_vertical = c(T, T, F),

       # put the names in the right places and adds boxes 
       labeling_args = list(tl_labels = TRUE,
                            tl_varnames = FALSE,
                            boxes = TRUE),
       # grip remains open 
       pop=FALSE 
       )

введите здесь описание изображения

# structure that matches plot, but it does not help
#match<-t(data1)

# try to add labels 
labeling_cells(text = data1, clip = FALSE)(data1)

Это приводит к:

# Error in ifelse(abbreviate_varnames, sapply(seq_along(dn), function(i) abbreviate(dn[i],  : 
#   replacement has length zero
# In addition: Warning message:
# In rep(no, length.out = length(ans)) :
#  'x' is NULL so the result will be NULL

Еще одна проблема, которая у меня есть, это то, что коробки не соответствуют этикеткам. Если у вас есть намек на это, просто дайте мне знать!

Это мой первый вопрос здесь, поэтому, пожалуйста, извините за возможные ошибки!

Большое спасибо!


person Karl A    schedule 08.04.2015    source источник


Ответы (2)


Да, это довольно запутанно и должно быть исправлено в labeling_cells(). По какой-то причине данные в маркировке должны быть обычными table, а не structable. Я подниму этот вопрос перед Дэвидом, основным автором mosaic() и специалистом по сопровождению пакетов.

Однако, если вы знаете, это легко обойти:

labeling_cells(text = as.table(data1), clip = FALSE)(as.table(data1))

мозаичная маркировка

person Achim Zeileis    schedule 13.06.2017

Исправлен восходящий поток в vcd 1.4-4, но обратите внимание, что вы можете просто использовать

mosaic(data1, labeling = labeling_values)
person user8163106    schedule 14.06.2017