[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