gpt4 book ai didi

r - table 和 ftable 有何不同?

转载 作者:行者123 更新时间:2023-12-05 03:44:18 25 4
gpt4 key购买 nike

ftable 的文档告诉我们“ftable 创建‘平面’列联表”。但是,这对我来说意义不大。我在下面放置了两个示例,但它们看起来非常相似,以至于我觉得我完全忽略了 tableftable 之间的区别。我是否对某些关键的编程或统计思想一无所知?

> ftable(mtcars[c("cyl", "vs", "am", "gear")])
gear 3 4 5
cyl vs am
4 0 0 0 0 0
1 0 0 1
1 0 1 2 0
1 0 6 1
6 0 0 0 0 0
1 0 2 1
1 0 2 2 0
1 0 0 0
8 0 0 12 0 0
1 0 0 2
1 0 0 0 0
1 0 0 0
> table(mtcars[c("cyl", "vs", "am", "gear")])
, , am = 0, gear = 3

vs
cyl 0 1
4 0 1
6 0 2
8 12 0

, , am = 1, gear = 3

vs
cyl 0 1
4 0 0
6 0 0
8 0 0

, , am = 0, gear = 4

vs
cyl 0 1
4 0 2
6 0 2
8 0 0

, , am = 1, gear = 4

vs
cyl 0 1
4 0 6
6 2 0
8 0 0

, , am = 0, gear = 5

vs
cyl 0 1
4 0 0
6 0 0
8 0 0

, , am = 1, gear = 5

vs
cyl 0 1
4 1 1
6 1 0
8 2 0

我怀疑它的意思是“扁平化”,如“扁平化嵌套列表”,但如果是这样,那么我不确定为什么我不能向 ftable 提供完全相同的参数> 尽我所能 table。例如,ftable(Titanic, row.vars = 1:3) 是有效的,但是 table(Titanic, row.vars = 1:3) 抛出关于长度不等的参数。

最佳答案

如果我们看一下结构,可以从 dim 属性中看出这一点

tbl1 <- table(mtcars[c("cyl", "vs", "am", "gear")])

str(tbl1)
'table' int [1:3, 1:2, 1:2, 1:3] 0 0 12 1 2 0 0 0 0 0 ...
- attr(*, "dimnames")=List of 4
..$ cyl : chr [1:3] "4" "6" "8"
..$ vs : chr [1:2] "0" "1"
..$ am : chr [1:2] "0" "1"
..$ gear: chr [1:3] "3" "4" "5"

ftbl1 <- ftable(mtcars[c("cyl", "vs", "am", "gear")])
str(ftbl1)
'ftable' int [1:12, 1:3] 0 0 1 0 0 0 2 0 12 0 ...
- attr(*, "row.vars")=List of 3
..$ cyl: chr [1:3] "4" "6" "8"
..$ vs : chr [1:2] "0" "1"
..$ am : chr [1:2] "0" "1"
- attr(*, "col.vars")=List of 1
..$ gear: chr [1:3] "3" "4" "5"

即flat table 是 2D,而 table 是 4D array

dim(tbl1)
#[1] 3 2 2 3

dim(ftbl1)
#[1] 12 3

注意它们都是array,一个array也是一个带有一些dimvector属性。

两者都不是list。正是这些属性使它们与众不同,以及它们的排列方式。例如如果我们删除属性,它们只是按不同值顺序排列的vector

c(ftbl1)
#[1] 0 0 1 0 0 0 2 0 12 0 0 0 0 0 2 6 0 2 2 0 0 0 0 0 0 1 0 1 0 1 0 0 0 2 0 0
c(tbl1)
#[1] 0 0 12 1 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 6 0 0 0 0 0 0 0 0 1 1 2 1 0 0

检查是否是列表

is.list(tbl1)
#[1] FALSE
is.list(ftbl1)
#[1] FALSE

关于table中的错误,如果我们检查?table,它只是没有row.vars参数

table(...,exclude = if (useNA == "no") c(NA, NaN),useNA = c("no", "ifany", "always"),dnn = list.names(...), deparse.level = 1)

?ftable

ftable(..., exclude = c(NA, NaN), row.vars = NULL,col.vars = NULL)

关于r - table 和 ftable 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66508398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com