• R语言
  • 求助帖该怎么写,才能吸引别人来帮忙

求助!求助!十万火急!求助帖发布之后,是不是急着等人响应?可惜惊叹号没啥用。如果按以下格式发帖,效果会胜过十万个惊叹号。

一个好的提问应该包括三部分内容:

  • 问题描述

  • 预期结果

  • 包括样本数据和代码的可重复例子

下面是一个提问模板,一个示例,和一个技巧。

1. 模板

1.1 帖子标题

求助:在做啥的时候遇见的啥问题{用一句话概述遇到的问题}

1.2 正文

问题描述

我在进行啥操作,目的是得到啥啥结果,但是遇到了如下问题:……

我的代码、示例数据和运行结果

贴出代码和数据,让别人拷贝粘贴过去就能直接重现这个问题,以便得到最快的帮助。推荐使用 reprex 包的reprex() 函数 和基础包的 dput() 函数。详见后面的示例。

我的系统环境

在 R 里运行 sessionInfo() 函数,将返回的信息贴出来。


2. 发帖示例

是一位朋友在本论坛提的一个问题。原帖已经写得很好了,然而仍有改善的空间。让我们根据上面的模板,将这篇求助帖修改如下:

原标题:

如何将数字转化为时间格式

修改:

求助: 如何将 5, 930, 2235 这样格式的数字转换为 0:05, 9:30, 22:35 这样格式的时间?

从原标题看不出这究竟是个提问帖还是个经验总结帖。修改后,即使不用看正文,也一眼就看清具体问题是什么。

原正文:

大家好

我有一列从0-2355的数字,我希望把它们转换成0:00, 23:55这样的时间格式

尝试了 times <- format(otter$time, format = "%h-%m")
或是运算otter$time <- as.numeric(substr(otter[,3],1,2))*60 + as.numeric(substr(otter[3,],3,4))

都没有成功,请问有什么方法可以实现转换?
谢谢。

修改后:

问题描述

我有一列格式为一到四位数的数字,如 0, 2355 等,我希望把它们转换成 0:00, 23:55 这样的时间格式,但没有成功。

我的代码、数据和运行结果

为了解决这个问题,我进行了如下测试,得到的都不是预期结果:

mydata <- c(840, 850, 900, 5, 10, 2355)
format(mydata, format = "%h-%m")
#> [1] " 840" " 850" " 900" "   5" "  10" "2355"
as.numeric(substr(mydata,1,2))*60 + as.numeric(substr(mydata,3,4))
#> [1] 5040 5100 5400   NA   NA 1435

我的系统环境

sessionInfo()
#> R version 3.5.1 (2018-07-02)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 7 x64 (build 7601) Service Pack 1
#> 
#> Matrix products: default
#> 
#> locale:
#> [1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936 
#> [2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936   
#> [3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
#> [4] LC_NUMERIC=C                                                   
#> [5] LC_TIME=Chinese (Simplified)_People's Republic of China.936    
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> loaded via a namespace (and not attached):
#>  [1] compiler_3.5.1    magrittr_1.5      htmltools_0.3.6  
#>  [4] tools_3.5.1       yaml_2.2.0        Rcpp_0.12.18     
#>  [7] stringi_1.2.4     rmarkdown_1.10.13 knitr_1.20       
#> [10] htmldeps_0.1.1    digest_0.6.17     stringr_1.3.1    
#> [13] evaluate_0.11

3.小技巧

下面的小技巧,告诉你如何把你的代码快捷优雅地贴出来。

仍然以上面的帖子为例,假如你出问题的代码是这样的:

mydata = read.csv("data.csv")
format(mydata, format = "%h-%m")
as.numeric(substr(mydata,1,2))*60 + as.numeric(substr(mydata,3,4))

要想别人重现你的故障,别人需要知道代码里用到的数据 mydata 是什么。上面这种情况,为了让别人没拿到 data.csv 文件也能正常运行你的后续代码,可以在上面的代码后面添加一条 dput()函数即可。

为了省事,系统环境报告函数也可以附在后面。所以,你要分享的代码应该改为:

mydata = read.csv("data.csv")
format(mydata, format = "%h-%m")
as.numeric(substr(mydata,1,2))*60 + as.numeric(substr(mydata,3,4))
dput(mydata)
sessionInfo()

然后,选中上面这些所有要分享的代码行,ctrl+c,再运行 reprex() 函数,这样就把代码和运行结果都存进了剪贴板,ctrl+v 贴到你的帖子里就行了。

珍爱生命,有效求助。节省别人的时间,才能快速得到帮助。

    dapengde 更改标题为「求助帖该怎么写,才能吸引别人来帮忙

    哈哈,一般上僕提问の问题没有提供devtools::session_info()信息,如果可以提供package_info()就更方便了哦。(冗談?)

    @dapengde @yihui @ryo
    稍微修改了一下置顶,把两个帖子放在更醒目的地方,另外两个帖子内容感觉有交叉,是不是可以考虑合并为一个

      @yihui @dapengde

      合并了,为了留下记录,原置顶跟修改过的置顶我放在这个repo里了

      除了合并了大鹏的发帖样板以外,其他板块也按原置顶改了不少并新增加了不少内容。

      新置顶算我个人的提案,为了看排版效果先挂上了,不过最终版还是希望大家一起定夺(毕竟我一人说了也不算?) 。

        我上次还准备找这样的文章,没想到就有人贴上来了。

        tctcab 辛苦了!很赞!这样就更醒目了,对新手的帮助大大的。

        不过,修改后的“须知”显得有点长,我担心新手有没有耐心读完……毕竟求助的时候一般都是心急火燎的……要是能像 RStudio Community 那样发帖时在编辑栏里提示发帖格式就完美了。

        还有就是,我写的那个只是个“求助帖”的发帖建议,而论坛发帖显然不限于求助帖。把求助帖的格式如此强调,会不会让新手误以为这个论坛仅供求助?

          dapengde

          确实,条条框框太多让人望而生畏就不好了,另外回头一看好像确实太强调求助帖啦~回头再调整调整

          新手应该大部分都是为求助而来的,这个我觉得不用担心。