【问题标题】:Name variables with names given in a list using a loop使用循环在列表中给出名称的变量名称
【发布时间】:2020-01-16 06:03:23
【问题描述】:

我在一个 excel 文件中有两个数据库,每个数据库都在一个单独的 Excel 表中,分别是 NOMINAL 和 REAL。然后我想使用循环将这些数据库上传到 R 中,如下所示:

library(readxl)
mylist <-list("NOMINAL", "REAL")
for (page in mylist) {
  page <- read_excel("C:/Users/Cys/OneDrive/Documents/Database/BIS-MLTI-FX.xlsx", sheet = page)
}

当我运行这个循环时,我有最后一个名为“page”的数据库(REAL),因为分配不允许用提供的列表中的名称命名我的数据库。

我的问题是我应该如何编写这个循环以便将列表中的名称分配给我的数据库?

【问题讨论】:

  • 看看assign function
  • 不,请不要使用assign,它的使用通常意味着为自己做更多的工作。这里还有另一个问题:您以page 作为字符进行循环,然后将返回值分配给同一变量page(随后被丢弃)。这应该类似于out &lt;- lapply(mylist, function(pg) read_excel("...", sheet=pg)),现在您在一个列表中有两个框架。
  • (之后,您可以执行names(out) &lt;- mylist 之类的操作,以便out$REALout[["REAL"]] 为您提供相应的表格。)

标签: r excel list loops variable-assignment


【解决方案1】:

如果您想在循环中执行此操作,那么您首先必须创建一个列表对象。然后,您可以将元素分配给该列表。

sheet_names <- c("NOMINAL", "REAL")
sheet_dfs <- list()

for (page in sheet_names) {
  sheet_dfs[page] <- 
    read_excel("C:/Users/Cys/OneDrive/Documents/Database/BIS-MLTI-FX.xlsx", 
    sheet = page)
}

【讨论】:

  • 非常感谢您的回答。但是,我完全尝试过: sheet_names
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 2018-12-08
  • 2014-02-25
  • 2014-12-28
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多