在Markdown中将输出保存到文本文件

时间:2018-12-02 23:17:56

标签: r r-markdown

我一直在H2O中使用Rmarkdown,当我想将输出保存到文本文件中时,仅保存了第一部分(页面),但是在控制台中没问题< / p>

我使用了以下代码:

fileConn<-file(".\\h2o.randomForest\\output.txt")
writeLines(capture.output(summary(rf1)), fileConn)
close(fileConn)

如何将所有输出保存到文本文件?

由于重复性要求

您可以尝试在Rmarkdown中遵循以下代码

library(h2o)
h2o.init()

# import the iris dataset:
# this dataset is used to classify the type of iris plant
# the original dataset can be found at https://archive.ics.uci.edu/ml/datasets/Iris
iris <-h2o.importFile("http://h2o-public-test-data.s3.amazonaws.com/smalldata/iris/iris_wheader.csv")

# convert response column to a factor
iris['class'] <-as.factor(iris['class'])

# set the predictor names
predictors <-colnames(iris)[-length(iris)]

# split into train and validation
iris_splits <- h2o.splitFrame(data = iris, ratios = .8, seed = 1234)
train <- iris_splits[[1]]
valid <- iris_splits[[2]]

# try using the `estimate_k` parameter:
# set k to the upper limit of classes you'd like to consider
# set standardize to False as well since the scales for each feature are     very close
iris_kmeans <- h2o.kmeans(x = predictors, k = 10, estimate_k = T, standardize = F,
                      training_frame = train, validation_frame=valid, seed = 1234)

# print the model summary to see the number of clusters chosen


fileConn<-file("output2.txt")
writeLines(capture.output(summary(iris_kmeans)), fileConn)
close(fileConn)

哪个给出以下输出

Console output

enter image description here

Rmarkown output

enter image description here

新发现

当您knit进行Rmarkdown时,可以,但是当run the current chunk时,则是异常。

更新

Windows和Ubuntu上的结果相同

enter image description here

sessionInfo:

R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1258   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

2 个答案:

答案 0 :(得分:0)

不确定我是否正确理解了您要达到的目标,但是如果您想要

将所有输出写入文本文件

最简单的方法是使用Rscript并从命令行重定向输出:

$args,...

或直接从R(例如,通过Rscript yourscriptfilename.R > output.txt (或Windows上的system):

shell

这将运行您的R脚本,而不是将输出写入控制台,而是将它们写入output.txt

编织器将system("Rscript yourscriptfilename.R > output.txt") 渲染到R Mardown文件的输出中

只需在R Markdown文件的块底部添加summary

答案 1 :(得分:0)

我实际上无法重现您的问题;也就是说,当我使用 R控制台编织运行当前块时,它对我来说效果很好。

我推测file连接和/或writeLines函数存在(晦涩)问题。因此,我建议您使用以下选项之一将输出写入文件。我还建议您在将输出发送到文件之前将其保存到变量。

选项1:,使用cat代替writeLines,如下所示:

fileConn<-file("output2.txt")
output <- capture.output(summary(iris_kmeans))
cat(output, file=fileConn)
close(fileConn)


选项2:如下,将catsink一起使用:

sink("output2.txt")
output <- capture.output(summary(iris_kmeans))
cat(output)
sink()

让我知道是否有帮助。