copySubstitute package:Biobase R Documentation _C_o_p_y _B_e_t_w_e_e_n _C_o_n_n_e_c_t_i_o_n_s _o_r _F_i_l_e_s _w_i_t_h _C_o_n_f_i_g_u_r_e-_L_i_k_e _N_a_m_e-_V_a_l_u_e _S_u_b_s_t_i_t_u_t_i_o_n _D_e_s_c_r_i_p_t_i_o_n: Copy files, directory trees or between connections and replace all occurences of a symbol by the corresponding value. _U_s_a_g_e: copySubstitute(src, dest, symbolValues, symbolDelimiter="@", allowUnresolvedSymbols=FALSE, recursive = FALSE, removeExtension = "\.in$") _A_r_g_u_m_e_n_t_s: src: Source, either a character vector with filenames and/or directory names, or a connection object. dest: Destination, either a character vector of length 1 with the name of an existing, writeable directory, or a connection object. The class of the 'dest' argument must match that of the 'src' argument. symbolValues: A named list of character strings. symbolDelimiter: A character string of length one with a single character in it. allowUnresolvedSymbols: Logical. If 'FALSE', then the function will execute 'stop' if it comes across symbols that are not defined in 'symbolValues'. recursive: Logical. If 'TRUE', the function works recursively down a directory tree (see details). removeExtension: Character. Matches to this regular expression are removed from filenames and directory names. _D_e_t_a_i_l_s: Symbol substitution: this is best explained with an example. If the list 'symbolValues' contains an element with name 'FOO' and value 'bar', and symbolDelimiter is '@', then any occurence of '@FOO@' is replaced by 'bar'. This applies both the text contents of the files in 'src' as well as to the filenames. See examples. If 'recursive' is 'FALSE', both 'src' and 'dest' must be connection or a filenames. The text in 'src' is read through the function 'readLines', symbols are replaced by their values, and the result is written to 'dest' through the function 'writeLines'. If 'recursive' is 'TRUE', 'copySubstitute' works recursively down a directory tree (see details and example). 'src' must be a character vector with multiple filenames or directory names, 'dest' a directory name. One use of this function is in 'createPackage' for the automatic generation of packages from a template package directory. _V_a_l_u_e: None. The function is called for its side effect. _A_u_t_h_o_r(_s): Wolfgang Huber _E_x_a_m_p_l_e_s: ## create an example file infile = tempfile() outfile = tempfile() writeLines(text=c("We will perform in @WHAT@:", "So, thanks to @WHOM@ at once and to each one,", "Whom we invite to see us crown'd at @WHERE@."), con = infile) ## create the symbol table z = list(WHAT="measure, time and place", WHOM="all", WHERE="Scone") ## run copySubstitute copySubstitute(infile, outfile, z) ## display the results readLines(outfile) ##-------------------------------------------------------------- ## This is a slightly more complicated example that demonstrates ## how copySubstitute works on nested directories ##-------------------------------------------------------------- d = tempdir() my.dir.create = function(x) {dir.create(x); return(x)} unlink(file.path(d, "src"), recursive=TRUE) unlink(file.path(d, "dest"), recursive=TRUE) ## create some directories and files: src = my.dir.create(file.path(d, "src")) dest = file.path(d, "dest") d1 = my.dir.create(file.path(src, "dir1.in")) d2 = my.dir.create(file.path(src, "dir2@FOO@.in")) d3 = my.dir.create(file.path(d2, "dir3")) d4 = my.dir.create(file.path(d3, "dir4")) d5 = my.dir.create(file.path(d4, "dir5@BAR@")) writeLines(c("File1:", "FOO: @FOO@"), file.path(d1, "file1.txt.in")) writeLines(c("File2:", "BAR: @BAR@"), file.path(d2, "file2.txt.in")) writeLines(c("File3:", "SUN: @SUN@"), file.path(d3, "file3.txt.in")) writeLines(c("File4:", "MOON: @MOON@"), file.path(d4, "@SUN@.txt")) ## call copySubstitute copySubstitute(src, dest, recursive=TRUE, symbolValues = list(FOO="thefoo", BAR="thebar", SUN="thesun", MOON="themoon")) ## view the result listsrc = dir(src, full.names=TRUE, recursive=TRUE) listdest = dir(dest, full.names=TRUE, recursive=TRUE) listsrc listdest cat(unlist(lapply(listsrc, readLines)), sep="\n") cat(unlist(lapply(listdest, readLines)), sep="\n")