строка символов в выводе функции R

Я пишу функцию, которая извлекает информацию из моделей, и я хочу разделить части вывода, такие как mtable в пакете memisc, ряд дефисов или тире между одним блоком вывода, например оценками параметров, и другим блоком, например информационными критериями. или разделение разных моделей. поэтому, если у меня есть две матрицы, и я хочу разделить их пунктирной линией, например

поэтому, если у меня есть две объединенные матрицы, они будут

structure(c(1, 3, 5, 7, 2, 4, 6, 8), .Dim = c(4L, 2L))

но они были бы отдельными

structure(c(1, 3, 2, 4), .Dim = c(2L, 2L))
structure(c(1, 3, 2, 4), .Dim = c(2L, 2L))

и хочу, чтобы они отображались в виде матриц, но как мне добавить к нему строку символов вместо того, чтобы просто делать это вручную и угадывать, сколько туда поместить без кавычек или номеров строк?

Я пробовал команду paste, format, cat, rep("="), и я знаю, что это будет работать, но не знаю, как контролировать ширину. Я знаю, что я немного расплывчата, и прошу прощения за это.


person JPK    schedule 18.12.2013    source источник
comment
Добро пожаловать в СО. Прочтите это: stackoverflow.com/questions/5963269/   -  person Matthew Lundberg    schedule 18.12.2013
comment
мои извинения за код   -  person JPK    schedule 18.12.2013


Ответы (1)


rowSums(nchar(x)) + ncol(x) должен дать вам достаточно хорошее приближение, чтобы выяснить, насколько широким должен быть ваш ряд =.

Пример:

x <- matrix(c(10, 2, 123, 4), ncol = 2)
rowSums(nchar(x)) + ncol(x) - 1
# [1] 6 3
max(rowSums(nchar(x)) + ncol(x) - 1)
# [1] 6

Чтобы выяснить это по нескольким матрицам, я полагаю, вы могли бы рассчитать ширину по нескольким матрицам примерно так:

max(vapply(list(x, y), function(i) {
  max(rowSums(nchar(i)) + ncol(i))
}, 1))

где list(x, y) — это список матриц с именем «x» и матрицы с именем «y».

person A5C1D2H2I1M1N2O1R2T1    schedule 18.12.2013
comment
спасибо, это вместе с поиском другого поста помогло мне, нашел похожий пост сбоку. - person JPK; 18.12.2013
comment
@JPK, круто. Вы также можете посмотреть код функций, на которые вы ссылаетесь, и выяснить, как они вычисляют ширину. Функция by в базе R, например, использует параметр width в качестве основы для того, сколько тире она должна напечатать. - person A5C1D2H2I1M1N2O1R2T1; 18.12.2013
comment
я обычно знаю, как смотреть на код, но я не смог найти его полностью, но нашел еще кое-что, просмотрев соответствующий пост (stackoverflow.com/questions/15046682/) извините за лишний вопрос здесь, я не нашел этот ответ, пока не задал его. - person JPK; 18.12.2013