我试图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()
我的目的,因为每当尝试导入某些列在单词之间有空格的数据时(例如带有日期时间戳的数据框),它都会失败。
编辑:经过进一步的故障排除后,当参数与包含4 列或更多列的数据框一起使用时,发现reproduce
如上所述失败。将不得不寻找替代方案。rows
如果有人有兴趣对此进行测试,请使用以下链接运行上面的代码,所有链接都包含不同数量的列:
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