[R] For loop output

Jan Kim jttkim at googlemail.com
Fri Aug 9 19:22:34 CEST 2013


On Fri, Aug 09, 2013 at 12:33:44PM +0100, Jenny Williams wrote:
> To update on the use of this little string, I am trying to use it to automate files to be loaded into a raster stack.
> I think the issue I have with the string is related to the backslashes. I need to just read the pure text so that the datasets can be sourced, though I am not sure whether the stack function will accept a string of files in this format either!

The backslashes can't cause a problem because they don't exist in the
string. They are generated as part of the representation of your string,
so that you can distinguish the double quotes which are part of the
string (prefixed by a backslash) from those enclosing your string.

Please see FAQ 7.37:

    http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f

Let me point out, though, that while this FAQ (along with the R language
specification) will enable you to understand the meaning of the display
of individual.proj.quote, all this adding quotes and commas most likely
is not going to be part of the solution to your problem. A variable
containing a single string, comprised of file names enclosed in quotes
and separated by commas is entirely useless in almost all circumstances.
The individual.proj variable is a much more starting point. I'm not
familiar with RasterLayer objects you (apparently) try to work with,
but as a general programming pattern to start with, I'd suggest creating
an empty stack, and then using a loop where in each iteration you read
one layer and add that to the stack.

Best regards, Jan

> >individual.proj.quote <-capture.output(write.table(matrix(individual.proj, 1), quote=TRUE, sep=",", row.names=FALSE, col.names=FALSE))
> 
> > individual.proj.quote
> [1] "Arabica/proj_current/individual_projections/proj_current_arabica_pa.data.tmp$pa.tab_Full_GBM.img\",\"Arabica/proj_current/individual_projections/proj_current_arabica_pa.data.tmp$pa.tab_Full_GLM.img\",\"Arabica/proj_current/individual_projections/proj_current_arabica_pa.data.tmp$pa.tab_Full_MARS.img\",\"Arabica/proj_current/individual_projections/proj_current_arabica_pa.data.tmp$pa.tab_Full_RF.img" 
> 
> >test4 = stack(individual.proj.quote)
> Cannot create a RasterLayer object from this file. (file does not exist)
> 
> 
> I ran a test with just one file which worked, but haven't managed to combine more files into the stack:
> 
> >test
> [1] "Arabica/proj_current/individual_projections/proj_current_arabica_pa.data.tmp$pa.tab_Full_GBM.img"
> 
> > library(raster)
> > test.1 = stack(test)
> > test.1
> class       : RasterStack 
> dimensions  : 9241, 8521, 78742561, 1  (nrow, ncol, ncell, nlayers)
> resolution  : 0.008333334, 0.008333334  (x, y)
> extent      : -18.00832, 53.00001, -38.00833, 39.00001  (xmin, xmax, ymin, ymax)
> coord. ref. : +proj=longlat +ellps=WGS84 +no_defs 
> names       : proj_current_arabica_pa.data.tmp.pa.tab_Full_GBM 
> min values  :                                                6 
> max values  :                                              995
> 
> 
> -----Original Message-----
> From: David Carlson [mailto:dcarlson at tamu.edu] 
> Sent: 08 August 2013 18:04
> To: Jenny Williams; r-help at r-project.org
> Subject: RE: [R] For loop output
> 
> It's not clear how you are planning to use this within R, but you don't need a loop.
> 
> individual.proj.quote <-
> capture.output(write.table(matrix(individual.proj, 1), quote=TRUE, sep=",", row.names=FALSE, col.names=FALSE))
> 
> This produces a single character string which consists of the quoted file names separated by commas.
> 
> -------------------------------------
> David L Carlson
> Associate Professor of Anthropology
> Texas A&M University
> College Station, TX 77840-4352
> 
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Jenny Williams
> Sent: Thursday, August 8, 2013 10:06 AM
> To: 'r-help at r-project.org'
> Subject: [R] For loop output
> 
> I am having difficulty storing the output of a for loop I have generated. All I want to do is find all the files that I have, create a string with all of the names in quotes and separated by commas. This is proving more difficult than I initially anticipated.
> I am sure it is either very simple or the construction of the for loop is not quite right The result gets automatically printed after the loop but I can't seem to save it.
> I have tried to create the element in advance but the result is the same: NULL
> 
> individual.proj =
> Sys.glob("Arabica/proj_current/individual_projections/*.img",
> dirmark = FALSE)
> individual.proj
> [1]
> "Arabica/proj_current/individual_projections/proj_current_arabic
> a_pa.data.tmp$pa.tab_Full_GBM.img"
>  [2]
> "Arabica/proj_current/individual_projections/proj_current_arabic
> a_pa.data.tmp$pa.tab_Full_GLM.img"
>  [3]
> "Arabica/proj_current/individual_projections/proj_current_arabic
> a_pa.data.tmp$pa.tab_Full_MARS.img"
>  [4]
> "Arabica/proj_current/individual_projections/proj_current_arabic
> a_pa.data.tmp$pa.tab_Full_RF.img"
>  [5]
> "Arabica/proj_current/individual_projections/proj_current_arabic
> a_pa.data.tmp$pa.tab_RUN10_GBM.img"
> 
> 
> ##generate loop to create string out of the table of projected files.
> L.ip = length(individual.proj)
>   for (i in 1:L.ip){
>            individual.proj.i <- individual.proj[i]
>            individual.proj.quote = cat(paste('"', individual.proj.i, '"', ',',sep=""))
>            }
> "Arabica/proj_current/individual_projections/proj_current_arabic
> a_pa.data.tmp$pa.tab_Full_GBM.img","Arabica/proj_current/individ
> ual_projections/proj_current....
> 
> ##print output string
> individual.proj.quote
> NULL
> 
> #command to be applied to individual.proj.quote to removed the final comma from the string substr(individual.proj.quote, 1, nchar(individual.proj.quote)-1)
> 
> Any help or pointers would be greatly appreciated, no amount of extensive google searches have been fruitful so far.
> 
> 
> ******************
> Jenny Williams
> Spatial Information Scientist, GIS Unit
> Herbarium, Library, Art & Archives Directorate Royal Botanic Gardens, Kew Richmond, TW9 3AB, UK
> 
> Tel: +44 (0)208 332 5277
> email: jenny.williams at kew.org<mailto:jenny.williams at kew.org>
> ******************
> 
> Film: The Forgotten Home of Coffee - Beyond the Gardens<http://www.youtube.com/watch?v=-uDtytKMKpA&sns=tw>
> Stories: Coffee Expedition -
> Ethiopia<http://storify.com/KewGIS/coffee-expedition-ethiopia>
>              Kew in Harapan Rainforest
> Sumatra<http://storify.com/KewGIS/kew-in-harapan-rainforest>
> Articles: Seeing the wood for the
> trees<http://www.kew.org/ucm/groups/public/documents/document/kp
> pcont_060602.pdf>
> How Kew's GIS team and South East Asia botanists are working to help conserve and restore a rainforest in Sumatra. Download a pdf of this article here.<http://www.kew.org/ucm/groups/public/documents/document/kp
> pcont_060602.pdf>
> 
> 
> ________________________________
> The Royal Botanic Gardens, Kew is a non-departmental public body with exempt charitable status, whose principal place of business is at Royal Botanic Gardens, Kew, Richmond, Surrey TW9 3AB, United Kingdom.
> 
> The information contained in this email and any attachments is intended solely for the addressee(s) and may contain confidential or legally privileged information. If you have received this message in error, please return it immediately and permanently delete it. Do not use, copy or disclose the information contained in this email or in any attachment.
> 
> Any views expressed in this email do not necessarily reflect the opinions of RBG Kew.
> 
> Any files attached to this email have been inspected with virus detection software by RBG Kew before transmission, however you should carry out your own virus checks before opening any attachments. RBG Kew accepts no liability for any loss or damage which may be caused by software viruses.
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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.

-- 
 +- Jan T. Kim -------------------------------------------------------+
 |             email: jttkim at gmail.com                                |
 |             WWW:   http://www.jtkim.dreamhosters.com/              |
 *-----=<  hierarchical systems are for files, not for humans  >=-----*



More information about the R-help mailing list