我正在帮助一位同事解决她的代码中的错误。我们希望在 4 个变量中获得具有有效值的单位的频率。她使用 ifelse 标记符合她的标准的单元,然后使用 summarytools::freq 来获取汇总频率表。嵌套代码(初始运行)生成以下错误:错误:长度(名称)== 1 is not 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))))