Потеря имен dimnames таблицы после cbind или rbind - PullRequest
5 голосов
/ 09 февраля 2012

После cbind или rbind - при создании объекта таблицы (например, добавление поля сумм или что-то подобное) имена dimnames теряются (смотрите y). Я нашел этот «обходной путь», но мне было интересно, есть ли решение из этого пакета, которое выглядит менее хакерским. Возможно, что-то, что можно сделать на лету? Я хотел бы сохранить объект класса table.

>   (x <- table(1:3, sample(1:3), dnn = c("rows", "cols")))
    cols
rows 1 2 3
   1 1 0 0
   2 0 0 1
   3 0 1 0
>   (y <- cbind(x, "4" = 4:6)) # "rows" and "cols" get lost
  1 2 3 4
1 1 0 0 4
2 0 0 1 5
3 0 1 0 6
> names(dimnames(y)) <- names(dimnames(x))
> y
    cols
rows 1 2 3 4
   1 1 0 0 4
   2 0 0 1 5
   3 0 1 0 6

1 Ответ

3 голосов
/ 09 февраля 2012

Как насчет addmargins?По умолчанию он вычисляет суммы, но вы можете подключить любые пользовательские функции.Например:

> addmargins(x, margin=c(2,2), FUN=list('sum', 'mean'))
Margins computed over dimensions
in the following order:
1: cols
2: cols
    cols
rows   1   2   3 sum mean
   1 0.0 1.0 0.0 1.0  0.5
   2 0.0 0.0 1.0 1.0  0.5
   3 1.0 0.0 0.0 1.0  0.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...