簡體   English   中英

使用與數據幀對應的文件名的 for 循環保存數據幀

[英]Saving data frames using a for loop with file names corresponding to data frames

我有一些數據框(顏色、集合、庫存),我想將它們中的每一個保存到我設置為 wd 的文件夾中。 我想使用 for 循環來執行此操作,但我不確定如何編寫文件參數,以便 R 理解它應該使用向量的元素作為文件名。

我可能會寫:

DFs <- c("colors", "sets", "inventory")
for (x in 1:length(DFs)){
  save(x, file = "x.Rda")
  }

目標是文件將保存為 colors.Rda、sets.Rda 等。但是,通過循環運行的最后一個元素只是保存為 x.Rda。

簡而言之,也許我的問題是:當參數需要字符串時,您如何告訴 R 我想使用在參數中循環運行的元素?

對於獎勵積分,如果我將來想從該文件夾加載一系列文件,我相信我會遇到同樣的問題。 與其單獨加載每個,我還想編寫一個 for 循環。 為了在幾分鍾前加載這些,我使用了非常笨重的代碼:

sets_file <- "~/Documents/ME teaching/R notes/datasets/sets.csv"
sets <- read.csv(sets_file)

inventories_file <- "~/Documents/ME teaching/R notes/datasets/inventories.csv"
inventories <- read.csv(inventories_file)

colors_file <- "~/Documents/ME teaching/R notes/datasets/colors.csv"
colors <- read.csv(colors_file)

為了節省你可以這樣做:

DFs <- list(color, sets, inventory)
names(DFs) = c("color", "sets", "inventory")
for (x in 1:length(DFs)){
  dx = paste(names(DFs)[[x]], "Rda", sep = ".")
  dfx = DFs[[x]]
  save(dfx, file = dx)
}

要指定路徑,只需在 dx object 的構造中通知如下即可閱讀。

讀書:

DFs <- c("colors", "sets", "inventory")
# or
DFs = dir("~/Documents/ME teaching/R notes/datasets/")
for(x in 1:length(DFs)){
  arq = paste("~/Documents/ME teaching/R notes/datasets/", DFs[x], ".csv", sep = "")
  DFs[x] = read.csv(arq)
}

它將作為列表讀取,因此您可以使用 [[]] 索引進行訪問。

為了緊湊,我在這里使用lapply而不是for循環,但想法是一樣的:

lapply(DFs, \(x) save(list=x, file=paste0(x, ".Rda"))))

請注意,您需要通過將x作為變量而不是字符(作為文件名的一部分)提供來生成不同的文件名。

要加載這些文件,您只需執行以下操作:

lapply(paste0(DFs, ".Rda"), load, envir = globalenv())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM