bugfix> r > 投稿

フォルダーから複数のSASデータファイルをインポートし、同じ元のSASデータセット名でRデータフレームとしてフォルダーに保存しようとしています。元のファイル名でファイルを保存する方法がわからないことを除いて、すべてが機能します(つまり、x in>がわからない> save(xxx、file = ...)。

私が試したコードは次のとおりです。

path <- "path to folder with sas files"
list.files(pattern=".sas7bdat$")
list.filenames<-list.files(pattern=".sas7bdat$")
for (i in 1:length(list.filenames)){
  assign(list.filenames[i], read_sas(list.filenames[i]))
  filename <- paste(list.filenames[i]) 
  save(list.filenames[i],file = paste0(path, paste(list.filenames[i], "Rdat", sep = ".")))
  }

動作しません...

for (i in 1:length(list.filenames)){
  assign(list.filenames[i], read_sas(list.filenames[i]))
  filename <- paste(list.filenames[i]) 
  save(list.filenames[[i]],file = paste0(path, paste(list.filenames[i], "Rdat", sep = ".")))
  }

効かない

for (i in 1:length(list.filenames)){
  assign(list.filenames[i], read_sas(list.filenames[i]))
  filename <- paste(list.filenames[i]) 
  save(filename,file = paste0(path, paste(list.filenames[i], "Rdat", sep = ".")))
  }

list.filenames [i]の元の名前でファイルを保存する方法を理解するのに役立ちますか?

回答 1 件
  • save の「リスト」引数を使用します 。何かのようなもの

    path <- "path to folder with sas files"
    list.filenames <- list.files(path, pattern="\\.sas7bdat$")
    for (i in list.filenames) {
        datName <- tools::file_path_sans_ext(i)
        assign(datName, read_sas(i))
        save(list=datName, file = paste0(path, paste(datName, "Rdat", sep = ".")))
    }
    
    

    動作します。また、私はあなたが pattern=".sas7bdat$" が欲しいと思う  として pattern="\\.sas7bdat$ 、「。」以来正規表現のワイルドカードです。

あなたの答え