Я пытаюсь использовать dput()
для создания воспроизводимого примера с большой базой данных. База данных должна быть большой, так как воспроизводимый пример включает скользящие средние значения. Способ, который я нашел для этого, включает функцию reproduce
, представленную здесь Как сделать отличный воспроизводимый пример R? от @Ricardo Saporta. reproduce
основан на dput()
(код здесь https://github.com/rsaporta/pubR/blob/gitbranch/reproduce.R).
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
, а затем предоставляет для него вывод dput()
. Он использует аргумент rows
для вывода полного кадра данных. Тем не менее, если я использую такой вывод для воссоздания фрейма данных, он терпит неудачу.
Попытка выделить вывод dput()
для нового фрейма данных приводит к неполному коду, требующему, чтобы я вручную добавил три круглых скобки в конце. И после этого я получаю следующее сообщение об ошибке: «Ошибка в представлении: аргументы подразумевают разное количество строк: 100, 61».
Обратите внимание, что вывод dput()
из reproduce
без аргумента rows = c(1:100)
работает нормально. Он просто выводит не полный кадр данных, а его образец.
#This works fine
reproduce(data)
Также обратите внимание, что для создания этого воспроизводимого примера я использовал метод pastebin. Этот метод не заменяет метод dput()
для моих целей, потому что он терпит неудачу всякий раз, когда пытается импортировать данные, в которых некоторые столбцы имеют пробелы между словами (например, кадры данных с отметками даты и времени).
EDIT: после некоторого дальнейшего устранения неполадок было обнаружено, что reproduce
не работает, как описано выше, когда аргумент rows
используется вместе с фреймом данных, содержащим 4 или более столбцов. Придется искать альтернативу.
Если кто-то заинтересован в тестировании, запустите приведенный выше код со следующими ссылками, каждая из которых содержит разное количество столбцов:
1) 100x5: http://pastebin.com/raw/xP1Zd0sC
2) 100x4: http://pastebin.com/raw/YZtetfne
3) 100 x 4: 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
rows=100
. - person Krug   schedule 01.05.2016dput()
не позволяет указать количество строк. По крайней мере, нет упоминания об этом в его документации. Его вывод — несколько строк в начале и несколько в конце. Мне нужно вывести всю базу данных, а не образец. - person Krug   schedule 01.05.2016dput()
выводить полную базу данных. - person Krug   schedule 01.05.2016