【问题标题】:Save dataframes with a foor loop in R在 R 中使用 for 循环保存数据帧
【发布时间】:2021-01-03 16:20:23
【问题描述】:

我正在尝试使用 R 的数据检索包从 USGS 保存流数据。它一直工作到现在,但我不是我改变它不再工作的东西,这是我的代码:

siteNumber <- c("094985005","09498501","09489500","09489499","09498502","09511300","09498400","09498500","09489700")

i <- 1
n <- length(siteNumber)

for (i in n) {
  
  Daily_Streamflow <- readNWISdv(siteNumber[i],parameterCd="00060", statCd="00003", "","")
  name <- paste("DSF", siteNumber[i], sep = "_")
  assign(name, value = Daily_Streamflow)
  i <- i + 1
}

现在仅将最后一个站点的数据保存为数据框。有人知道我做错了什么吗?

【问题讨论】:

  • 尝试使用 for (i in 1:n) 作为你的 for 循环
  • 像这样将项目写入全局环境是个坏主意。将它们存储在列表中更整洁、更方便、更安全。您可以使用DSF &lt;- lapply(siteNumber, readNWISdv, parameterCd="00060", statCd="00003") 获得整个列表,而无需使用循环或分配函数。您可以轻松获取每个数据帧(例如DSF$'094985005'),如果您需要对所有帧执行操作或搜索,您可以使用lapply 轻松完成

标签: r dataframe for-loop time


【解决方案1】:

阅读 ?forfor() 循环遍历一个序列。您不需要显式增加索引(这就是 while() 循环的方式)

for (i in 1:n) {
  
  Daily_Streamflow <- readNWISdv(siteNumber[i],parameterCd="00060", statCd="00003", "","")
  name <- paste("DSF", siteNumber[i], sep = "_")
  assign(name, value = Daily_Streamflow)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多