4

我正在使用R 中包的tableContinuous功能。reporttools

一切都按预期工作,并使用文档中的一些示例:

library("reporttools")
data(CO2)
vars <- CO2[, 4:5]
group <- CO2[, "Treatment"]
weights <- c(rep(1, 60), rep(0, 10), rep(2, 14))

tableContinuous(vars = vars, weights = weights, subset = 
                  c(rep(TRUE, 57), rep(FALSE, 100 - 57)), group = group, prec = 3, print.pval = 
                  "kruskal", cap = "Table of continuous variables.", lab = "tab: descr stat")

我按预期得到了一张桌子:

在此处输入图像描述

是否可以从输出中删除all行?

4

1 回答 1

2

不,这样的选项在tableContinuous. all仅当每个变量只有一个级别时才省略这些行,即参见if (n.levels == 1) ...源代码的末尾tableContinuous

但是,这个问题可以使用正则表达式来解决。我不是这方面的专家,所以可能有更好的方法。

library(reporttools)
data(CO2)
vars <- CO2[, 4:5]
group <- CO2[, "Treatment"]
weights <- c(rep(1, 60), rep(0, 10), rep(2, 14))

result <- tableContinuous(vars = vars, weights = weights, subset = 
                            c(rep(TRUE, 57), rep(FALSE, 100 - 57)), group = group, prec = 3, print.pval = 
                            "kruskal", cap = "Table of continuous variables.", lab = "tab: descr stat")

完全删除all行:

cat(gsub("\\\\hline\n[^\n]+& all &[^\n]+\n", "", result))

保持 p 值:

greg <- gregexpr("p (=|<) [^\n]+", result)
regmatches(result, greg) <- list(gsub("(?<=&)[-.\\w ]+", " ", 
                                     regmatches(result, greg)[[1]], perl = TRUE))
cat(result)
于 2013-05-29T22:39:14.223 回答