Экспортировать PMML в текстовый файл?

Простой вопрос: я сохранил код PMML объекта R, используя pmmlcode <- pmml(my.object), и мне нужен способ сохранить его непосредственно в текстовый файл. Обычный метод write.table не работает, потому что данные не являются таблицей.


person Jon    schedule 04.06.2013    source источник


Ответы (4)


Попробуйте toString.XMLNode из пакета XML, а затем запишите в файл с writeLines. Вам нужно будет предоставить пример данных для более полного ответа.

person Thomas    schedule 04.06.2013

Вы можете просто использовать SaveXML, как в примере ниже:

library(randomForest)

library(pmml)

data(airquality)

ozone.out <- randomForest(Ozone ~ Wind+Temp+Month, data=na.omit(airquality), ntree=200)

saveXML(pmml(ozone.out, data=airquality), "airquality_rf.pmml")
person user2262875    schedule 07.06.2013

Я использую данные радужной оболочки только для создания фиктивного файла pmml и команды приемника, чтобы поместить ваш вывод pmml в файл .pmml,

    R > library(pmml)
    R > lml <- lm(iris$Sepal.Length~iris$Sepal.Width)
    R > sink("myPmml.pmml")
    R > cat("<?xml version=\"1.0\"?>\n")
    R > pmml(lml)
    R > sink()

Вывод myPmml.pmml должен быть сохранен везде, где установлен ваш setwd в вашем .Rprofile , по умолчанию в Windows это «Mydocuments». Конечно, это будет работать, даже если вы поместите .txt вместо .pmml в команду sink(), что-то вроде:

sink("mypmml.txt")

Редактировать: добавлена ​​команда cat для размещения тегов xml сверху. Спасибо J.Dimeo.

person PKumar    schedule 19.11.2013
comment
Чтобы не быть слишком придирчивым, но вы должны сделать это: cat("<?xml version=\"1.0\"?>\n") сразу после вызова стока и перед кодом pmml. - person J. Dimeo; 11.07.2014
comment
Спасибо J.Dimeo, я добавил эту строку. - person PKumar; 11.07.2014

В отсутствие тестового кода для создания этого, но после решения моей предыдущей проблемы с доступностью пакета pmml на зеркале UCLA CRAN. Это дает приемлемый вывод для удобочитаемости человеком, хотя и не в формате, который будет интерпретирован моим приложением, поддерживающим PMML:

cat(paste(unlist(pmmlcode),"\n"), file="yourfile.txt")

Ни один из них не работал:

Если это просто вектор символов:

cat(pmmlcode, file="yourfile.txt")

Или, если это список:

lapply(pmmlcode, cat, file="yourfile.txt", append=TRUE)
person IRTFM    schedule 04.06.2013