R 如何存储在控制台上打印的默认输出
我在mirt软件包中编写了一个名为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
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))