将列表的内容写入R中的一个文件

Dav*_*agh 3 r

我有一堆数据帧的摘要列表,我想将它们全部写入一个文件,所以我可以有一个文本文件,其中包含调用summary()每个数据帧的输出.

我试过这个:

 dflist = lapply(1:4, function(x){df = data.frame(SID=paste("S",1:10,sep=""),matrix(runif(100),nrow=10,ncol=10))})
 sumlist  = lapply(dflist, function(df){summary(df)})
lapply(sumlist, function(i){write(i,"all_data_summary.txt",append=T )})
Run Code Online (Sandbox Code Playgroud)

它有点工作,但它将每个变量的摘要级别写入一个新行,并且不包含变量名称,如下所示:

S1     :1  
S10    :1  
S2     :1  
S3     :1  
S4     :1  
S5     :1  
(Other):4  
Min.   :0.1557  
1st Qu.:0.2284  
Median :0.5109  
Mean   :0.4707  
3rd Qu.:0.6471  
Max.   :0.9509  
NA
Min.   :0.05512  
1st Qu.:0.14310  
Median :0.20889  
Mean   :0.41891  
3rd Qu.:0.78261  
Max.   :0.97565  
NA
Min.   :0.01937  
1st Qu.:0.23876  
Median :0.57103  
Mean   :0.50806  
3rd Qu.:0.70491  
Max.   :0.95610  
NA
Min.   :0.0212  
1st Qu.:0.3445  
Median :0.5634  
Mean   :0.5554  
3rd Qu.:0.7484  
Max.   :0.9797 
Run Code Online (Sandbox Code Playgroud)

我希望输出为以下形式:

List Element 1              
SID X1  X2  X3  X4
S1     :1   Min.   :0.1557      Min.   :0.05512     Min.   :0.01937     Min.   :0.0212  
S10    :1   1st Qu.:0.2284      1st Qu.:0.14310     1st Qu.:0.23876     1st Qu.:0.3445  
S2     :1   Median :0.5109      Median :0.20889     Median :0.57103     Median :0.5634  
S3     :1   Mean   :0.4707      Mean   :0.41891     Mean   :0.50806     Mean   :0.5554  
S4     :1   3rd Qu.:0.6471      3rd Qu.:0.78261     3rd Qu.:0.70491     3rd Qu.:0.7484  
S5     :1   Max.   :0.9509      Max.   :0.97565     Max.   :0.95610     Max.   :0.9797  
(Other):4               
List Element 2              
SID X1  X2  X3  X4
S1     :1   Min.   :0.1557      Min.   :0.05512     Min.   :0.01937     Min.   :0.0212  
S10    :1   1st Qu.:0.2284      1st Qu.:0.14310     1st Qu.:0.23876     1st Qu.:0.3445  
S2     :1   Median :0.5109      Median :0.20889     Median :0.57103     Median :0.5634  
S3     :1   Mean   :0.4707      Mean   :0.41891     Mean   :0.50806     Mean   :0.5554  
S4     :1   3rd Qu.:0.6471      3rd Qu.:0.78261     3rd Qu.:0.70491     3rd Qu.:0.7484  
S5     :1   Max.   :0.9509      Max.   :0.97565     Max.   :0.95610     Max.   :0.9797  
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?干杯,戴维.

Gre*_*now 6

您建议的输出看起来像标准打印输出,因此您可能只想采用将打印输出捕获到文件的方法.一种简单的方法是使用该sink功能,然后lapply打印摘要.或者您可以capture.output自己使用并保存结果(如果您想在保存之前修改或检查任何内容).

如果那些不够用,那么请查看生成输出的print函数的代码,看看是否可以修改它以将信息放入文件中.看起来数据框上的汇总函数返回一个字符串表,因此print.table可以开始.