R 如何存储在控制台上打印的默认输出

R 如何存储在控制台上打印的默认输出,r,R,我在mirt软件包中编写了一个名为residuals的函数 当您使用df.p=TRUE作为参数时,此函数默认打印输出 我尝试的是: library(mirt) data(LSAT7) LSAT7=expand.table(LSAT7) x <- mirt(LSAT7, 1, '3PL') ss=residuals(x, df.p=TRUE) 我想存储这个输出,但不幸的是我不能这样做 是否有人知道如何在不修改主函数的情况下存储此输出,即残差 注意:在控制台上键入ss将打印以下内容: I

我在mirt软件包中编写了一个名为
residuals
的函数

当您使用
df.p=TRUE
作为参数时,此函数默认打印输出

我尝试的是:

library(mirt)
data(LSAT7)
LSAT7=expand.table(LSAT7)
x <- mirt(LSAT7, 1, '3PL')
ss=residuals(x, df.p=TRUE)
我想存储这个输出,但不幸的是我不能这样做

是否有人知道如何在不修改主函数的情况下存储此输出,即
残差

注意:在控制台上键入
ss
将打印以下内容:

  Item.1 Item.2 Item.3 Item.4 Item.5
Item.1     NA -0.023 -0.030  0.052  0.044
Item.2 -0.512     NA  0.035 -0.019 -0.041
Item.3 -0.889  1.222     NA -0.005 -0.005
Item.4  2.755 -0.362 -0.026     NA  0.000
Item.5  1.952 -1.705 -0.026  0.000     NA

这与自动打印的输出不同。

如果查看
getMethod(“残差”,“探索类”)
您将看到,如果
df.p
TRUE
则矩阵是打印的而不是返回的。由于您不想修改代码,因此使用
capture.output
可以快速获得输出-但是如果您愿意稍微折衷/玩弄代码,您可以编写一个wee函数,从
mirt
结果中提取表,而无需太多麻烦

使用
残差
代码,您可以导出表格并打印结果(并非每个选项都包含在下面)


extractFun如果您查看
x
的残差方法的源代码,您可以看到该矩阵是如何计算和打印的

自由度为:

df <- (object@K - 1) %o% (object@K - 1)
有一些细微的差别,因为
残差
对返回值进行四舍五入。哎哟

> ss10=residuals(x, df.p=TRUE, digits=10)
印刷品:

Degrees of freedom (lower triangle) and p-values:

       Item.1    Item.2    Item.3     Item.4    Item.5
Item.1     NA 0.4744862 0.3456212 0.09694774 0.1623190
Item.2      1        NA 0.2690456 0.54726048 0.1916342
Item.3      1 1.0000000        NA 0.87124548 0.8725782
Item.4      1 1.0000000 1.0000000         NA 0.9906174
Item.5      1 1.0000000 1.0000000 1.00000000        NA
我的函数将计算:

> dfp(x,ss10)
     [,1]      [,2]      [,3]       [,4]      [,5]
[1,]   NA 0.4744862 0.3456212 0.09694774 0.1623190
[2,]    1        NA 0.2690456 0.54726048 0.1916342
[3,]    1 1.0000000        NA 0.87124548 0.8725782
[4,]    1 1.0000000 1.0000000         NA 0.9906174
[5,]    1 1.0000000 1.0000000 1.00000000        NA

更好。

如果我正确理解了这个问题,这里有一种方法可以将输出返回为
data.frame

read.table(text=capture.output(ss))

最终目的是什么?
capture.output
sink
能满足您的需求吗?谢谢@AnandaMahto。capture.output以行的形式为我提供输出。我们不能以正确的矩阵格式写入输出吗?请尝试
read.table(text=capture.output(print(ss))
。谢谢@Backlin。您的代码使它看起来更好。但实际上我想要的是对输出的每个元素(默认打印的元素)的访问权限,就像我们访问矩阵的元素一样。我们可以吗?非常感谢。这就是我要找的东西。:)非常感谢你的宝贵建议。你的代码也适用于我。我希望我能选择两个答案。
> dfp(x,ss)
     [,1]      [,2]      [,3]       [,4]      [,5]
[1,]   NA 0.4742744 0.3457484 0.09695082 0.1623715
[2,]    1        NA 0.2689685 0.54739758 0.1916354
[3,]    1 1.0000000        NA 0.87190032 0.8719003
[4,]    1 1.0000000 1.0000000         NA 1.0000000
[5,]    1 1.0000000 1.0000000 1.00000000        NA
> ss10=residuals(x, df.p=TRUE, digits=10)
Degrees of freedom (lower triangle) and p-values:

       Item.1    Item.2    Item.3     Item.4    Item.5
Item.1     NA 0.4744862 0.3456212 0.09694774 0.1623190
Item.2      1        NA 0.2690456 0.54726048 0.1916342
Item.3      1 1.0000000        NA 0.87124548 0.8725782
Item.4      1 1.0000000 1.0000000         NA 0.9906174
Item.5      1 1.0000000 1.0000000 1.00000000        NA
> dfp(x,ss10)
     [,1]      [,2]      [,3]       [,4]      [,5]
[1,]   NA 0.4744862 0.3456212 0.09694774 0.1623190
[2,]    1        NA 0.2690456 0.54726048 0.1916342
[3,]    1 1.0000000        NA 0.87124548 0.8725782
[4,]    1 1.0000000 1.0000000         NA 0.9906174
[5,]    1 1.0000000 1.0000000 1.00000000        NA
read.table(text=capture.output(ss))