Im пытается использовать dput()
для создания воспроизводимого примера с большой базой данных. База данных должна быть большой, поскольку воспроизводимый пример включает скользящие средние. Способ, которым я нашел это, включает в себя функцию reproduce
, поделился здесь How to make a great R reproducible example? by @Ricardo Saporta. reproduce
основан на dput()
(код https://github.com/rsaporta/pubR/blob/gitbranch/reproduce.R).Невозможность создать воспроизводимый пример с помощью функции replicate/dput
library(data.table)
library(devtools)
source_url("https://raw.github.com/rsaporta/pubR/gitbranch/reproduce.R")
data <- read.table("http://pastebin.com/raw/xP1Zd0sC")
setDF(data)
reproduce(data, rows = c(1:100))
Этот код создает data
dataframe, а затем обеспечивает dput()
выход для него. Он использует аргумент rows
для вывода полного кадра данных. Однако, если я использую такой вывод для воссоздания фреймворка данных, он терпит неудачу.
Попытка выделить вывод dput()
на новый dataframe приводит к неполному коду, в результате чего я должен добавить три скобки вручную в конце. И после этого я получаю следующее сообщение об ошибке: «Ошибка в представлении: аргументы подразумевают различное количество строк: 100, 61».
Не обязательно, чтобы dput()
вывод reproduce
без аргумента rows = c(1:100)
работает нормально. Он просто не выводит полный dataframe, а скорее образец.
#This works fine
reproduce(data)
Также обратите внимание, что для создания этого воспроизводимого примера я использовал метод pastebin. Этот метод не заменяет метод dput()
для моих целей, поскольку он терпит неудачу при попытке импортировать данные, когда в некоторых столбцах есть пробелы между словами (например, dataframes with datetime stamp).
EDIT: после некоторого дальнейшего поиска неисправностей обнаружено, что reproduce
терпит неудачу, как описано выше, когда rows
аргумент используется вместе с dataframe, содержащей 4 или более столбцов. Придется найти альтернативу.
Если кто-то заинтересован в тестировании этого запустите код выше, со следующими ссылками, все они содержали разное количество столбцов:
1) 100x5: http://pastebin.com/raw/xP1Zd0sC
2) 100x4: http://pastebin.com/raw/YZtetfne
3) 100x4: http://pastebin.com/raw/63Ap2bh5
4) 100x3: http://pastebin.com/raw/1vMMcMtx
5) 100x3: http://pastebin.com/raw/ziM1bYQt
6) 100x1: http://pastebin.com/raw/qxtQs5u4
Попытка создать воспроизводимый пример для вопроса SO. – Krug
Такая же проблема с использованием 'rows = 100'. – Krug
Спасибо, Ричард. 'dput()' не позволяет указывать количество строк. По крайней мере, не упоминать об этом в своей документации. Его вывод состоит из нескольких строк в начале и нескольких в конце. Мне нужно вывести всю базу данных, а не образец. – Krug