risks of using setwd() in a script?

前端 未结 6 2152
抹茶落季
抹茶落季 2020-12-04 15:59

I\'ve heard it said that it is bad practice to use setwd() in a script.

  • What are the risks/dangers associated with it?
  • What are bett
6条回答
  •  广开言路
    2020-12-04 16:16

    I can't think of any particular issues with using setwd() in a script run on a server I manage as it does return an error which can be trapped with try(), and you can manage it. I have used setwd() when being lazy about paths - see below!

    I use file.path() extensively in scripts production or otherwise. Working across the files in an input directory and putting the output graphics and reports elsewhere. So something along the lines of... (untested) This would be a bit tedious using setwd().

    kInDir <- '~/Indir'
    kOutDir <- '~/Outdir'
    flist <- dir(path=kInDir, pattern='^[a-z]{2,5}\\.csv$')
    # note I could have used full.names=T - but it's easier not to...
    for (fnam in flist) {
      # full path to the report file created
      sfnam <- file.path(kOutDir, gsub('.csv', '_report.txt', fnam))
      # full path to the csv file that will be created
      ofnam <- file.path(kOutDir, gsub('.csv', '_b.csv', fnam))
      #
      # ok... we're going to process this CSV file...
      r1 <- read.csv(file.path(kInDir, fnam))
      #
      # we''ll put the output from the analysis into this report file
      sink(sfnam, split=TRUE)
      # processs it... into a new data.frame k1
      # blah blah blah...
      #
      write.csv(k1, file=ofnam, row.names=FALSE)
      sink() # turn off this particular report file
    }
    

提交回复
热议问题