![](/img/trans.png)
[英]Using base::function with tidyverse and janitor to create several crosstables in R
[英]Using loops to create multiple crosstables in R
我有一個包含一個主要分類結果變量和多個分類暴露變量的數據集。 我想為每個曝光變量生成一系列帶有卡方檢驗的單獨交叉表,我想知道是否有辦法使用循環來做到這一點。
這本質上是我要完成的工作的長版本:
ctable(data$x1, data$y, chisq=T, useNA='no')
ctable(data$x2, data$y, chisq=T, useNA='no')
ctable(data$x3, data$y, chisq=T, useNA='no')
這是我第一次把它變成一個循環:
for(i in c('x1', 'x2', 'x3')){
ctables <- ctable(data[[i]], data$y, chisq=T, useNA='no')
}
ctables
運行它時我沒有收到任何錯誤,但它只返回最后一個變量名的 ctable(在本例中為 x3)。 我錯過了什么?
注意:我需要專門命名數據框(data$y 而不是只說 y),因為我正在使用包含多個數據框的大型 SQL 數據庫。
您可以改用lapply()
:
ctables <- lapply(c('x1', 'x2', 'x3'), function(i) {
ctable(data[[i]], data$y, chisq=T, useNA='no', dnn =c(i,"y"))
})
** 使用dnn=c(i,"y")
更新以在生成的ctable
中指定顯式名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.