我有一个大的data.frame,在绘制时显示了一些奇怪的属性。我想在 Stackoverflow 上问一个关于它的问题,为此我想以一种可以将其粘贴到 SO 中的形式写出 data.frame,其他人可以轻松运行它并将其放回再次 data.frame 对象。有没有简单的方法来实现这一点?另外,如果真的很长,我应该使用粘贴箱而不是直接粘贴在这里吗?
4 回答
要直接回答您的问题,最简单的方法是使用summary()
或head()
显示有关数据框的信息。我建议不要将实际数据粘贴到 SO 问题中,而是提供数据的公共链接供社区使用。如果您还没有看到,box.net服务提供了很多在线协作的免费空间。
最后,如果数据在绘制时表现出奇怪的行为,为什么不提供您用于绘制的代码和一些示例绘制本身。
首先,德鲁的想法非常好。
此外,如果您减少数据并隔离“怪异”部分,则使用dput()
. 这是允许其他人加载它的最直接的方式。尽管您需要先将数据减少到合理的数量。
否则,将其作为 CSV 文件发布在可通过 HTTP 访问的位置,人们可以使用read.csv
. 尽管要求人们帮助您处理非常大的数据集是不合理的。
最后,看看这个问题的答案:如何在 R 中加载示例数据集?
这是一个很好的问题。
这是我对答案的尝试——以建议的形式提出更好的问题,并提供问题随附的数据。我可能违反了以下每一项建议,但至少我将来有一些东西可以参考,也许它对其他人也有用。
首先,我怀疑任何提出问题的人都希望得到答案。
具有足够的抽象性,以便将来他们可以解决当前问题所属的一般问题;和
有足够的实际指导(通常这意味着实际的 R 代码)来实际解决摆在我们面前的问题。
再说一遍:你的问题中的抽象(通常)会导致答案中的抽象,这意味着一个更有用的答案,但也增加了你实际上得到一个可接受的答案的可能性——社区以前不太可能看到那个确切的数据集; 这里的人更有可能识别出一种模式。但是这种模式可能会被太多的数据所掩盖。
其次,充分解释问题所需的数据量并不重要——重要的是人们试图回答问题需要多长时间才能将这些数据放入他们的 R 环境中。基本 R 分布中提供了 50,000 行的数据集——没关系,因为我可以通过几次击键将数据输入 R。更重要的是,如果您可以参考其中一个数据集,那么您不必费心在问题窗口中剪切和粘贴内容。相比之下,我真的尽量避免强迫人们从 SO 页面上刮掉几行数据,以便他们能够正确理解我的问题(Dirk 除外,他在脑海中进行计算。)
第三,除非绝对需要,否则剪切和粘贴问题中数据集的整个宽度(所有列)只是懒惰。数据很少能替代简明的问题描述。我希望 OP 花费一两分钟并修剪他们的实际数据集,以便他们提供的数据不超过说明问题实际所需的数据。
第四,如果数据可以通过公式或算法“提供”,那么只需提供。例如,如果一个问题与随机游走有关,我们不需要数据,只需说“随机游走”,几乎这里的每个人都能够在一小段代码中生成数据。
dump
当数据框不是很大时效果很好。