【问题标题】:Read and store dataframe with each iteration每次迭代读取和存储数据帧
【发布时间】:2019-03-21 13:21:23
【问题描述】:

我需要一个简单的代码来创建一个循环,该循环转到几个子文件夹并在每次迭代中读取那里的文件。阅读后,我想使用我拥有的因子名称来存储数据。该因子有 19 个级别,我想读取 19 个子文件夹的 19 个文件。目前,每次循环都会覆盖数据,因为读取的数据始终以相同的名称存储,并且不会循环遍历因子的名称。

我尝试过的代码:

    # read data table for each region in the control period
for(l in 1:length(regions)){
  name <- regions@data$name[l]
  setwd(paste("filepath","/",name,sep=""))
  data <- read.table(paste(name,".mit",sep=""),skip=1,header=TRUE)
  data$Date <- paste(data$YYYY,"-",data$MM,"-",data$DD,sep="")
  data$Date <- as.POSIXct(data$Date,format="%Y-%m-%d")
}

【问题讨论】:

  • 请包含您已经尝试过的代码...
  • 试试assign()

标签: r loops dataframe


【解决方案1】:

在不知道你的数据等情况下,你想要的是将不同文件的所有内容读入 R?然后你需要为你的循环提供一些东西来返回你的工作区。使用assign(),您可以为每个单独的区域创建一个数据框,如下所示:

 for(l in 1:length(regions)){
      name <- regions@data$name[l]
      setwd(paste("filepath","/",name,sep=""))
      data <- read.table(paste(name,".mit",sep=""),skip=1,header=TRUE)
      data$Date <- paste(data$YYYY,"-",data$MM,"-",data$DD,sep="")
      data$Date <- as.POSIXct(data$Date,format="%Y-%m-%d")
      df_name <- paste0("dataframe_",name)
      assign(df_name  ,data, envir=.GlobalEnv)

    }

【讨论】:

  • 此代码有效,我现在已将数据存储在我的全局环境中。只是每个区域的数据现在以区域短名称命名。为此,您必须将 df_name
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2021-10-23
  • 2021-06-01
  • 2021-08-02
  • 1970-01-01
  • 2022-01-05
相关资源
最近更新 更多