[R] Storing long string with white space in variable

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Wed Oct 19 15:09:31 CEST 2016


The best way to do this is to put your code in a package and put the files into a dedicated directory in the package that you just copy files from using system.file.

R does not have Python """ strings or Perl "here" files. You can create a script that reads the files in with readlines and writes out the source code version of those files with dput, but that is very un-R-like.
-- 
Sent from my phone. Please excuse my brevity.

On October 19, 2016 4:57:59 AM PDT, G.Maubach at weinwolf.de wrote:
>Hi All,
>
>I would like to store a long string with white space in a variable:
>
>-- cut --
>  # Create README.md
>  readme <- "---
>title: "Your project title here"
>author: "Author(s) name(s) here"
>date: "Current date here"
>output: html_document
>---
>
>```{r setup, include=FALSE}
>knitr::opts_chunk$set(echo = TRUE, cache = FALSE)
>```
># Project Context
>
># Goals
>
># Approach
>
># Reference to main program
>´´´{r}
>source("main_program.R")
>´´´
>
># Information on used system and configuration
>```{r}
>cat("Gathering system information ...\n)
>sessionInfo()
>```
>"
>cat(readme, file = "README.md")
>
>-- cut --
>
>I am looking for an equivalent to Pythons """  """ long string feature.
>
>I searched the web and found this:
>
>http://stackoverflow.com/questions/6329962/split-code-over-multiple-lines-in-an-r-script
>https://stat.ethz.ch/pipermail/r-help/2006-October/115358.html
>
>But this is not the solution to the problem.
>
>How can I store long strings with white space in a variable?
>
>Kind regards
>
>Georg
>
>PS: This is a template for a project folder for each project. I would
>like 
>to create it with R script instead of distributing it as a template
>file. 
>This way one needs only the R script to setup a project like this:
>
>#-----------------------------------------------------------------------
># Module        : t_setup_project_directory.R
># Author        : Georg Maubach
># Date          : 2016-10-19
># Update        : 2016-10-19
># Description   : Setup a directory structure for a new analytics
>#                 project
># Source System : R 3.3.0 (64 Bit)
># Target System : R 3.3.0 (64 Bit)
>#
># This program is distributed in the hope that it will be useful,
># but WITHOUT ANY WARRANTY; without even the implied warranty of
># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>#--------1---------2---------3---------4---------5---------6---------7--
>
>t_version = "2016-10-19"
>t_module_name = "t_setup_project_directory.R"
>t_status = "development"
>
>cat(
>    paste0(
>        "\n",
>        t_module_name,
>        " (Version: ",
>        t_version,
>        ", Status: ",
>        t_status,
>        ")",
>        "\n",
>        "\n",
>        "Copyright (C) Georg Maubach 2016
>
>        This software comes with ABSOLUTELY NO WARRANTY.",
>        "\n",
>        "\n"
>    )
>)
>
>library(svDialogs)
>
># If do_test is not defined globally define it here locally by 
>un-commenting it
>t_do_test <- FALSE
>
># [ Function Defintion 
>]--------------------------------------------------------
>t_setup_project_directory <- function() {
> 
>#-----------------------------------------------------------------------------
>  # Setup a directory structure for a new analytics
>  #
>  # Args:
>  #   None.
>  #
>  # Operation:
>  #   The user can create or select a directory for the projects files.
>  #   The function then places all sub directories in this project
>  #   folder.
>  #   The function saves a RData file with objects containing the path
>  #   to project directory and its sub folders.
>  #
>  # Returns:
>  #   Nothing.
>  #
>  # Error handling:
>  #   None.
>  #
>  # See also:
>  #   ./.
> 
>#-----------------------------------------------------------------------------
>
>  # Get and/or create project directory
>  v_project_dir <- svDialogs::dlgDir()$res
>
>  # Define names for sub directories
>  data          <- "data"             # data to be loaded into or
>                                      # saved from R
> documentation <- "documentation"    # explanatory material for results
>                                      # (e. g. knitR documents)
>  fundamentals  <- "fundamentals"     # background knowledge
>  input         <- "data/input"       # input data eventually manually
>                                      # revised for import
>  meta          <- "data/meta"        # meta data (e. g. lookup tables)
>  output        <- "data/output"
>  raw           <- "data/raw"         # a copy of all input data never
>                                      # touched for safety reasons and
>                                      # not read by R
>  program       <- "program"          # all scripts and runnable files
> modules       <- "program/modules"  # project specific packages, files
>                                    # or functions in separate files as
>                                    # well as all other sub routines to
>                                      # be sourced or loaded
> results       <- "results"          # container for all resulring data
>                                      # in an aggregated form
>  graphics      <- "results/graphics"
>  tables        <- "results/tables"
>  presentations <- "results/presentations"
>  temp          <- "temp"
>
>  v_paths_relative <- list(
>    project       = v_project_dir,
>    documentation = documentation,
>    fundamentals  = fundamentals,
>    input         = input,
>    meta          = meta,
>    output        = output,
>    raw           = raw,
>    program       = program,
>    modules       = modules,
>    graphic       = graphics,
>    table         = tables,
>    presentation  = presentations,
>    temp          = temp
>  )
>  v_paths_full      <- list(
>    documentation = file.path(v_project_dir, documentation),
>    fundamentals  = file.path(v_project_dir, fundamentals),
>    input         = file.path(v_project_dir, input),
>    meta          = file.path(v_project_dir, meta),
>    output        = file.path(v_project_dir, output),
>    raw           = file.path(v_project_dir, raw),
>    program       = file.path(v_project_dir, program),
>    modules       = file.path(v_project_dir, modules),
>    graphic       = file.path(v_project_dir, graphics),
>    table         = file.path(v_project_dir, tables),
>    presentation  = file.path(v_project_dir, presentations),
>    temp          = file.path(v_project_dir, temp)
>    )
>
>  # Create sub directories if they are not there
> cat("-------------------------------------------------------------\n")
>  cat("Creating directories ...\n")
>  for (entry in v_paths_full) {
>    if (file.exists(entry)) {
>      cat("Directory ", entry, " NOT created. Exists already!\n")
>    } else {
>      dir.create(path = entry, recursive = TRUE)
>      cat("Directory ", entry, " created!\n")
>    }  # end if
>  }  # end for
>  cat("... Done! (Creating directories)\n")
> cat("-------------------------------------------------------------\n")
>
>  # Create README.md
>  readme <- "---
>title: "Your project title here"
>author: "Author(s) name(s) here"
>date: "Current date here"
>output: html_document
>---
>
>```{r setup, include=FALSE}
>knitr::opts_chunk$set(echo = TRUE, cache = FALSE)
>```
># Project Context
>
># Goals
>
># Approach
>
># Reference to main program
>´´´{r}
>source("main_program.R")
>´´´
>
># Information on used system and configuration
>```{r}
>cat("Gathering system information ...\n)
>sessionInfo()
>cat("... Done! (Gathering system information)\n")
>```
>"
>
>
>  # Save config file
> cat("-------------------------------------------------------------\n")
>  cat("Saving project config file ...\n")
>  v_file_config <- file.path(v_paths_full$program,
>                             "project_config.RData")
>  save(list = c("v_paths_full", "v_paths_relative"),
>       file = v_file_config
>  )
>  cat("File ", v_file_config, " created!\n")
>  cat("... Done! (Saving path names)\n")
> cat("-------------------------------------------------------------\n")
>}  # end function
>
># [ Test Defintion 
>]------------------------------------------------------------
>t_test <- function(do_test = FALSE) {
>  if (do_test == TRUE) {
>    t_setup_project_directory()
>    }  # end if
>}  # end function
>
># [ Test Run 
>]------------------------------------------------------------------
>t_test(do_test = t_do_test)
>
># [ Clean up 
>]------------------------------------------------------------------
>rm("t_module_name", "t_version", "t_status", "t_do_test", "t_test")
>
># EOF .
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list