Оказывается, что @Shane первоначально опубликовал (но быстро удалил), что является правильным ответом с более поздними версиями R.
Где-то на этом пути для ftable
был добавлен метод as.matrix
(хотя я не нашел его в файлах NEWS, которые я прочитал.
Метод as.matrix
для ftable
позволяет вам довольно хорошо справляться с «вложенными» частотными таблицами (это то, что ftable
создает довольно красиво). Учтите следующее:
temp <- read.ftable(textConnection("breathless yes no
coughed yes no
age
20-24 9 7 95 1841
25-29 23 9 108 1654
30-34 54 19 177 1863"))
class(temp)
# [1] "ftable"
Трюк head(as.table(...), Inf)
не работает с таким ftables
, потому что as.table
преобразует результат в многомерный массив.
head(as.table(temp), Inf)
# [1] 9 23 54 95 108 177 7 9 19 1841 1654 1863
По той же причине второе предложение также не работает:
t <- as.table(temp)
class(t) <- "matrix"
# Error in class(t) <- "matrix" :
# invalid to set the class to matrix unless the dimension attribute is of length 2 (was 3)
Однако, с более свежими версиями R, просто использовать as.matrix
было бы хорошо:
as.matrix(temp)
# breathless_coughed
# age yes_yes yes_no no_yes no_no
# 20-24 9 7 95 1841
# 25-29 23 9 108 1654
# 30-34 54 19 177 1863
class(.Last.value)
# [1] "matrix"
Если вы предпочитаете data.frame
вместо matrix
, посмотрите table2df
из моего пакета "mrdwabmisc" на GitHub .