To expand on Mario's response below: sprintf() is a function which returns a value which is a [vector of] character string[s]. The "print" in its name is there because its name is the same as the C function sprintf whose purpose is to create a character string ("s") formatted ("f") according to the format argument. sprintf() does not perform the operation of "printing" its value to the screen -- never!
However, on may get the impression that it does so if one uses it "stand-alone" in a command line: sprintf("%.4f",pi) # [1] "3.1416" but this is because *anything* which has a value, when entered stand-alone in a command line, will result in the value being "printed" to the screen. It is R which does this, not the "anything". X <- sprintf("%.4f",pi) ## Note that this does not print either X # [1] "3.1416" Inside a loop, or inside a function, you need to wrap the "sprintf(...)" inside a cat() or print() statement; when something which has a value is named in such a context, the "printing to screen" is suppressed. It is R which suppresses it. for(i in (1:2)){ X <- sprintf("%.4f",pi) X } produces nothing on screen. However, for(i in (1:2)){ X <- sprintf("%.4f",pi) print(X) } # [1] "3.1416" # [1] "3.1416" See ?sprintf for more detail on its relation with the C function of the same name. Hoping this helps, Ted. On 16-Feb-11 10:25:31, Mario Valle wrote: > Use > cat(sprintf('I did the the %d,%d \n',k,l)) > The functions do not print in non interactive mode > Hope it helps > mario > On 16-Feb-11 11:15, Alaios wrote: >> Dear all I have an sprintf inside a loop to track changes in >> variable's value. >> >> This sprintf statement works if I copy and paste it inside R >> sprintf('I did the the %d,%d \n',k,l) >> >> but when this is inside a loop I get no message. >> >> listcounter<-1 >> for (k in c(1:mmax)){ # >> for (l in c(1:nmax)){ >> >> lst[[listcounter]]<-fun(estimatedsr) >> listcounter<-listcounter+1 >> sprintf('I did the the %d,%d \n',k,l) >> } >> } >> >> >> When I paste the code above I never get any message printed. I know >> that the loop works. When I kill the execution of the loop the >> listcounter variable has value different from the initial one. >> >> What might be the solution to that strange problem? >> >> Best Regards >> Alex >> >> ______________________________________________ >> R-help@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. > > -- > Ing. Mario Valle > Data Analysis and Visualization Group | > http://www.cscs.ch/~mvalle > Swiss National Supercomputing Centre (CSCS) | Tel: +41 (91) > 610.82.60 > v. Cantonale Galleria 2, 6928 Manno, Switzerland | Fax: +41 (91) > 610.82.82 > > ______________________________________________ > R-help@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. -------------------------------------------------------------------- E-Mail: (Ted Harding) <ted.hard...@wlandres.net> Fax-to-email: +44 (0)870 094 0861 Date: 16-Feb-11 Time: 10:56:35 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@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.