Create a default comment header template in R?

前端 未结 3 1747
误落风尘
误落风尘 2021-02-04 10:36

Is it possible to create a default comment header template in R for all new scripts?

I generally include some standard info at the top of all my scripts and would like

相关标签:
3条回答
  • 2021-02-04 11:04

    If you are using vim you could define a snippet like this ultisnips one in a separate R-snippet file:

    snippet header "R Header template" b
    #' ---
    #' title:  ${1:title here}
    #' author: ${2:John Smith (John@Smith.com)}
    #' date:   ${3:`date +%Y-%m-%d`}
    #' ---
    endsnippet
    

    You would only have to type header<tab> which is a massive time-saver especially since it fills in predefined values (such date).

    This seems also Rmarkdown compatible as discussed here.

    0 讨论(0)
  • 2021-02-04 11:20

    Following the suggestion from @lmo above, I created two new code snippets in RStudio by editing the snippets file located at Preferences > Code > Edit Snippets

    Note: Code below the snippet definition must be indented using tab and not two spaces

    Snippet 1: Comment header for new scripts

    snippet header_script
      ##################################################
      ## Project:
      ## Script purpose:
      ## Date:
      ## Author:
      ##################################################
    

    Snippet 2: Comment header for sections of code within a script:

    snippet header_section
      ## Section:
      ##################################################
    

    Now, whenever I want to insert a given header, I just start typing the snippet name (e.g. header_script), select it from the autocomplete menu (do not type out in full), and hit enter to insert the comment header.

    0 讨论(0)
  • 2021-02-04 11:20

    I don't know if you can do it directly, but you may be able to approximate it by putting the following in your Rprofile.

    make_r_template <- function(filename = "r_template.R", dir = getwd())
    {
      if (file.exists(file.path(dir, filename))) invisible(NULL)
      else{
        write(c("##################################################",
                "## Project:",
                "## Script purpose:",
                "## Date:",
                "## Author:",
                "##################################################"),
              file = file.path(dir, filename),
              sep = "\n")
      }
    }
    
    make_r_template()
    

    This will run every time R starts and write the blank template to the working directory, so long as it doesn't exist. You could also run the function at any point with a different filename value to create a blank template elsewhere.

    A nice supplemental touch would be a second function that looks at a file, attempts to identify the header, and inserts it if the header is not found.

    0 讨论(0)
提交回复
热议问题