猿问

如何制作一个很好的R可重复的例子

如何制作一个很好的R可重复的例子

在与同事讨论性能,教学,发送错误报告或在邮件列表上搜索指导时,以及在Stack Overflow上,通常会询问可重复的示例并始终提供帮助。

您有什么建议创建优秀示例的提示?如何以文本格式粘贴r中的数据结构?您还应该包含哪些其他信息?

在另外还有其他招数来使用dput()dump()structure()?你什么时候应该包括library()require()声明?其中保留字应避免一个,此外cdfdata等?

怎样才能成为一位伟大的[R重复的例子?


尚方宝剑之说
浏览 603回答 3
3回答

慕工程0101907

(这是我对如何写一个可重复的例子的建议。我试图让它变短但很甜)如何编写可重现的示例。如果您提供可重现的示例,您最有可能获得R问题的良好帮助。一个可重现的示例允许其他人通过复制和粘贴R代码来重新创建您的问题。为了使您的示例可重现,您需要包含四件事:所需的包,数据,代码和R环境的描述。应该在脚本的顶部加载包,因此很容易看到示例需要哪些包。在电子邮件或Stack Overflow问题中包含数据的最简单方法是使用dput()生成R代码来重新创建它。例如,要mtcars在R中重新创建数据集,我将执行以下步骤:dput(mtcars)在R中运行复制输出在我可重现的脚本中,键入mtcars <-然后粘贴。花一点时间确保您的代码易于其他人阅读:确保你已经使用了空格,你的变量名称简洁,但信息丰富使用注释来指出问题所在尽力删除与问题无关的所有内容。代码越短,理解起来就越容易。sessionInfo()在代码中包含注释的输出。这总结了您的R环境,并且可以轻松检查您是否使用了过时的软件包。你可以通过启动一个新的R会话并粘贴你的脚本来检查你是否真的做了一个可重现的例子。在将所有代码放入电子邮件之前,请考虑将其放在Gist github上。它将为您的代码提供良好的语法突出显示,您不必担心电子邮件系统会破坏任何内容。

萧十郎

就个人而言,我更喜欢“一个”衬里。一些事情:my.df&nbsp;<-&nbsp;data.frame(col1&nbsp;=&nbsp;sample(c(1,2),&nbsp;10,&nbsp;replace&nbsp;=&nbsp;TRUE), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col2&nbsp;=&nbsp;as.factor(sample(10)),&nbsp;col3&nbsp;=&nbsp;letters[1:10], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col4&nbsp;=&nbsp;sample(c(TRUE,&nbsp;FALSE),&nbsp;10,&nbsp;replace&nbsp;=&nbsp;TRUE))my.list&nbsp;<-&nbsp;list(list1&nbsp;=&nbsp;my.df,&nbsp;list2&nbsp;=&nbsp;my.df[3],&nbsp;list3&nbsp;=&nbsp;letters)数据结构应该模仿作者的问题而不是确切的逐字结构。当变量不覆盖我自己的变量或上帝禁止,函数(如df)时,我真的很感激。或者,可以剪切几个角并指向预先存在的数据集,例如:library(vegan)data(varespec)ord&nbsp;<-&nbsp;metaMDS(varespec)不要忘记提及您可能正在使用的任何特殊包装。如果你想在更大的物体上展示一些东西,你可以试试my.df2&nbsp;<-&nbsp;data.frame(a&nbsp;=&nbsp;sample(10e6),&nbsp;b&nbsp;=&nbsp;sample(letters,&nbsp;10e6,&nbsp;replace&nbsp;=&nbsp;TRUE))如果您通过raster包处理空间数据,则可以生成一些随机数据。在包装插图中可以找到很多例子,但这里有一个小金块。library(raster)r1&nbsp;<-&nbsp;r2&nbsp;<-&nbsp;r3&nbsp;<-&nbsp;raster(nrow=10,&nbsp;ncol=10)values(r1)&nbsp;<-&nbsp;runif(ncell(r1))values(r2)&nbsp;<-&nbsp;runif(ncell(r2))values(r3)&nbsp;<-&nbsp;runif(ncell(r3))s&nbsp;<-&nbsp;stack(r1,&nbsp;r2,&nbsp;r3)如果您需要实现的某些空间对象sp,则可以通过“空间”包中的外部文件(如ESRI shapefile)获取一些数据集(请参阅任务视图中的空间视图)。library(rgdal)ogrDrivers()dsn&nbsp;<-&nbsp;system.file("vectors",&nbsp;package&nbsp;=&nbsp;"rgdal")[1]ogrListLayers(dsn)ogrInfo(dsn=dsn,&nbsp;layer="cities")cities&nbsp;<-&nbsp;readOGR(dsn=dsn,&nbsp;layer="cities")
随时随地看视频慕课网APP
我要回答