在 summarytools 中嵌套 ifelse

Nesting ifelse inside summarytools

我正在帮助一位同事解决她的代码错误。我们想要获得具有跨 4 个变量的有效值的单位的频率。她使用 ifelse 来标记符合她标准的单元,然后使用 summarytools::freq 获得汇总频率 table。嵌套代码(初始 运行)产生以下错误: 错误:长度(名称)== 1 不是 TRUE

有人可以帮助我了解这里发生的事情吗?

当 ifelse 被分离出来时,循序渐进的方法没有问题(标记为 b)。我还意外地发现,在 ifelse 周围包含一组额外的括号可以消除错误(标记为 c)

#create some data
x <- data.frame("hs.risk.old" = NA, "hs.risk.new" = c(48,42,35), "ms.risk.old" = NA, "ms.risk.new" = c(52,57,NA))

#conduct summary with steps separated
x$flag <- ifelse(!is.na(x$hs.risk.new) | !is.na(x$ms.risk.new) | !is.na(x$hs.risk.old) | !is.na(x$ms.risk.old),1,0)
freq_x <- data.frame(summarytools::freq(x$flag))

#summary nested gives error and warning
freq_xb <- data.frame(summarytools::freq(ifelse(!is.na(x$hs.risk.new) | !is.na(x$ms.risk.new) | !is.na(x$hs.risk.old) | !is.na(x$ms.risk.old),1,0)))

#summary with extra parentheses gives no error, but still warning
freq_xc <- data.frame(summarytools::freq((ifelse(!is.na(x$hs.risk.new) | !is.na(x$ms.risk.new) | !is.na(x$hs.risk.old) | !is.na(x$ms.risk.old),1,0))))

尝试从 github 安装 summarytools:

devtools::install_github("dcomtois/summarytools", ref = "dev-current")

此问题已在此处提出并关闭:https://github.com/dcomtois/summarytools/issues/66

如果开发版本仍然存在此错误,您可以在 github 上将其作为错误提出。