如何使用crosstab与apply或sapply函数

7eumitmz  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在努力使用crosstab函数,可在链接:

source("http://pcwww.liv.ac.uk/~william/R/crosstab.r")

我还使用了gtsummary库并将mtcars转换为tibble,然后使用以下命令将vsam列转换为字符:

library(gtsummary)
mtcars = mtcars %>% as_tibble()
mtcars = apply(mtcars %>% select(vs, am), 2, as.character)

crosstab(mtcars, row.vars = "vs")
crosstab(mtcars, row.vars = "am")

我想使用applysapply函数实现相同的功能,而不使用crosstab函数的row.vars参数,我不知道如何设置。
我试过了

apply(mtcars, 2, crosstab(mtcars, row.vars = c('vs', 'am')))

但它不起作用。是否有其他方法来实现这一点,即使使用sapply函数?
谢谢

goucqfw6

goucqfw61#

嗨,你几乎是对的,你只是对apply语法感到困惑:
您希望迭代一列列名(变量)而不是dataframe,并将其作为row.vars参数传递。

lapply(c('vs', 'am'),\(col) crosstab(mtcars, row.vars = col))
sapply(c('vs', 'am'),\(col) crosstab(mtcars, row.vars = col),simplify = F)

等价的for循环是:

for (col in c('vs', 'am')) {
  crosstab(mtcars,row.vars = col)|>print()
}

相关问题