Сохранение вывода в текстовый файл в уценке - PullRequest
0 голосов
/ 03 декабря 2018

Я работал с H2O в Rmarkdown, и когда я хотел сохранить вывод в текстовом файле, сохранилась только первая часть (страница), однако в консоли все было в порядке

Я использовал следующий код:

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)

, который дает следующие выходы

Консольный вывод

enter image description here

Выход Rmarkown

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 голосов
/ 21 декабря 2018

Я не мог воспроизвести вашу проблему;то есть он хорошо работает на моей стороне, когда я использую либо R консоль , knit , либо Run Current Chunk .

Я бы предположил, что существует (неясная) проблема с подключением file и / или функцией writeLines.Поэтому я бы предложил использовать одну из следующих опций для записи вывода в файл.Я также рекомендовал бы сохранить выходные данные в переменную перед отправкой в ​​файл.

Опция 1: с использованием cat вместо writeLines, как показано ниже:

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

Вариант 2: с использованием cat с sink следующим образом:

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

Дайте мне знать, если это поможет.

0 голосов
/ 16 декабря 2018

Не уверен, правильно ли я понимаю, чего вы пытаетесь достичь, но если вы хотите

Запишите все выходные данные в текстовый файл

Самый простой способ сделать этоиспользовать Rscript и перенаправить вывод из командной строки:

Rscript yourscriptfilename.R > output.txt

или напрямую из R, например, через system (или shell в Windows):

system("Rscript yourscriptfilename.R > output.txt")

Это запустит ваш R-скрипт и вместо записи вывода в консоль запишет их в output.txt

knitr для рендеринга summary в выходной файл R Mardown

Просто добавьте summary(iris_kmeans) в конец вашего чанка в файле R Markdown

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...