R 提取回归类型输出的一部分

R 提取回归类型输出的一部分,r,list,function,dataframe,regression,R,List,Function,Dataframe,Regression,下面,我想知道如何提取结果的最后一部分,名为似然比检验 一个选择是 out <- capture.output(result) out[cumsum(grepl("Likelihood", out)) > 0] #[1] "Likelihood Ratio Test:" #[2] "X^2(df = 1) = 1.163544, p-val = 0.28073" 一个选择是 out <

下面,我想知道如何提取结果的最后一部分,名为似然比检验

一个选择是

out <- capture.output(result)
out[cumsum(grepl("Likelihood", out)) > 0]
#[1] "Likelihood Ratio Test:"                 
#[2] "X^2(df = 1) = 1.163544, p-val = 0.28073"
一个选择是

out <- capture.output(result)
out[cumsum(grepl("Likelihood", out)) > 0]
#[1] "Likelihood Ratio Test:"                 
#[2] "X^2(df = 1) = 1.163544, p-val = 0.28073"

另一个选项是查看生成输出的函数。在本例中,它是weightr:::print.weightfunct,相关行为

<snip>
        cat("\n")
        cat("Likelihood Ratio Test:")
        cat("\n")
        df <- length(x[[2]]$par) - length(x[[1]]$par)
        lrchisq <- 2 * (abs(x[[1]]$value - x[[2]]$value))
        pvalue <- 1 - pchisq(lrchisq, df)
        cat("X^2(df = ", df, ") = ", lrchisq, ", p-val = ", format.pval(pvalue), 
            sep = "")
</snip>
因此,您可以使用

x = result
df <- length(x[[2]]$par) - length(x[[1]]$par)
lrchisq <- 2 * (abs(x[[1]]$value - x[[2]]$value))
pvalue <- 1 - pchisq(lrchisq, df)

> lrchisq
#[1] 1.163544
> pvalue
#[1] 0.2807317

另一个选项是查看生成输出的函数。在本例中,它是weightr:::print.weightfunct,相关行为

<snip>
        cat("\n")
        cat("Likelihood Ratio Test:")
        cat("\n")
        df <- length(x[[2]]$par) - length(x[[1]]$par)
        lrchisq <- 2 * (abs(x[[1]]$value - x[[2]]$value))
        pvalue <- 1 - pchisq(lrchisq, df)
        cat("X^2(df = ", df, ") = ", lrchisq, ", p-val = ", format.pval(pvalue), 
            sep = "")
</snip>
因此,您可以使用

x = result
df <- length(x[[2]]$par) - length(x[[1]]$par)
lrchisq <- 2 * (abs(x[[1]]$value - x[[2]]$value))
pvalue <- 1 - pchisq(lrchisq, df)

> lrchisq
#[1] 1.163544
> pvalue
#[1] 0.2807317

指示的输出是在print.weightfunct中计算的,因此我们可以复制print方法,然后向其添加跟踪,该跟踪捕获所需信息并将其输出到一行数据帧中。W:


指示的输出是在print.weightfunct中计算的,因此我们可以复制print方法,然后向其添加跟踪,该跟踪捕获所需信息并将其输出到一行数据帧中。W:


那太好了。比我的答案更一般,因为它可以用来获取打印调用和输出中计算的所有不同统计数据,但我认为这是一种危险的方法,尽管我投了更高的票。我计划在一个函数中使用这个解决方案,当在三组不同的数据上测试它时,即使我输入了不同的数据集,函数也只输出第一个数据集的结果!我认为罪魁祸首是它是通过打印功能发生的,所以也许你忘了打印它。要在函数中使用它并获取函数capture.W,您需要将.W初始化为任何NULL值,然后将print方法的环境设置为函数中的环境,如下所示,答案中的代码为:f,这很好。比我的答案更一般,因为它可以用来获取打印调用和输出中计算的所有不同统计数据,但我认为这是一种危险的方法,尽管我投了更高的票。我计划在一个函数中使用这个解决方案,当在三组不同的数据上测试它时,即使我输入了不同的数据集,函数也只输出第一个数据集的结果!我认为罪魁祸首是它是通过打印功能发生的,所以也许你忘了打印它。要在函数中使用它并获取函数capture.W,您需要将.W初始化为任何NULL值,然后将print方法的环境设置为函数中的环境,如下所示:f