Have you ever noticed that when you run x <- 1:5 y <- 2:6 plot( x, y+1 )
you get the expressions you used in your call to plot on the axis labels? `x` is an expression consisting of a single symbol and y+1 is an expression consisting of the addition operator and two arguments: the symbol x and the constant 1. Plot uses these expressions in two ways: one to get numbers to plot, but also converts the expressions into strings that can be printed on the axes. The save function has an `...` argument that it expects to find symbol names in, and when you pass an expression as an unnamed argument instead and it then tries to convert the expression to a string and use that as a name for a variable, you get problems.... so don't do that. The save function also has the named argument `list` that does not have that symbol-name-extracting behaviour. By explicitly passing a vector of character strings (of length one in your case) in the named `list` argument you avoid that special handling applied by the save function to the `...` argument. It does seem strange at first, but it goes along with some rather convenient features of the R statistical environment like formulas and intuitive plot labeling, and the ability to use save( Var_2000, file = paste0( "Var_", year, ".Rdata" ) ) with no quotes. On April 9, 2018 9:11:49 PM PDT, Marc Girondot via R-help <r-help@r-project.org> wrote: >Dear list member, > >I think that I have detected a strange behavior of the save() command: > > > year <- "2000" > > assign(paste0("Var_", year), list(A=10, B=20)) > > get(paste0("Var_", year)) >$A >[1] 10 > >$B >[1] 20 > ># At this point all is ok, I have created a list of name Var_2000 > > > save(paste0("Var_", year), file=paste0("Var_", year, ".Rdata")) >Error in save(paste0("Var_", year), file = paste0("Var_", year, >".Rdata")) : > objet ‘paste0("Var_", year)’ introuvable > >(introuvable=cannot be found) > >but > > > save("Var_2000", file=paste0("Var_", year, ".Rdata")) > >When I read the help for save: ?save > >... the names of the objects to be saved (as symbols or character >strings). > >I checked if paste0("Var_", year) produced a character string: > > > str("Var_2000") > chr "Var_2000" > > str(paste0("Var_", year)) > chr "Var_2000" > >The solution was to include the name in the list argument: > > > save(list=paste0("Var_", year), file=paste0("Var_", year, ".Rdata")) > >But I don't understand what is the difference between "Var_2000" and >paste0("Var_", year) as both produced the same output. > >Thanks for your help, > >Marc > > >R Under development (unstable) (2018-03-23 r74448) -- "Unsuffered >Consequences" >Copyright (C) 2018 The R Foundation for Statistical Computing >Platform: x86_64-apple-darwin15.6.0 (64-bit) > >______________________________________________ >R-help@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. -- Sent from my phone. Please excuse my brevity. ______________________________________________ R-help@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.