我有一堆数据帧的摘要列表,我想将它们全部写入一个文件,所以我可以有一个文本文件,其中包含调用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)
有任何想法吗?干杯,戴维.
您建议的输出看起来像标准打印输出,因此您可能只想采用将打印输出捕获到文件的方法.一种简单的方法是使用该sink功能,然后lapply打印摘要.或者您可以capture.output自己使用并保存结果(如果您想在保存之前修改或检查任何内容).
如果那些不够用,那么请查看生成输出的print函数的代码,看看是否可以修改它以将信息放入文件中.看起来数据框上的汇总函数返回一个字符串表,因此print.table可以开始.