首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过循环遍历文件夹-R更改标识符

通过循环遍历文件夹-R更改标识符
EN

Stack Overflow用户
提问于 2021-02-01 09:46:07
回答 1查看 27关注 0票数 0

我有个循环相关的问题。我有以下文件夹结构(摘录):

代码语言:javascript
复制
├───Y2017
    │       UDB_cSK17D.csv
    │       UDB_cSK17H.csv
    │       UDB_cSK17P.csv
    │       UDB_cSK17R.csv
    │       UDB_cUK17D.csv
    │       UDB_cUK17H.csv
    │       UDB_cUK17P.csv
    │       UDB_cUK17R.csv            
└───Y2018
    │       UDB_cSK18D.csv
    │       UDB_cSK18H.csv
    │       UDB_cSK18P.csv
    │       UDB_cSK18R.csv
    │       UDB_cUK18D.csv
    │       UDB_cUK18H.csv
    │       UDB_cUK18P.csv
    │       UDB_cUK18R.csv

所有的文件都有相同的结构。我想循环遍历它们,并从选定的列数中提取数据。文件名也都有相同的结构。所有档案都有:

  1. 独特的国家确定(例如英国,SK在上面的例子)
  2. 独特的数据库类型(D,H,P.-文件名中的最后一个字符)

我想要构造一个循环来迭代文件名。对于一个国家来说,这样做会是这样的:

代码语言:javascript
复制
    library(data.table)

    ldf<-list()

    country_id<-"UK(.*)"
    db_id<-"P.csv$"

    listcsv<-dir(pattern = paste0(country_id,db_id), recursive = T, full.names = T)
    
    for (k in 1:length(listcsv)){
        ldf[[k]]<-fread(listcsv[k],select = c("PB010","PB020"))
        }
    
    uk_data<-bind_rows(as.data.frame(do.call(rbind,ldf[])))

此代码根据我给出的国家标识符提取我需要的所有列(在本例中为UK)。由于我的数据集中有许多国家,所以我希望有一个代码来迭代和更新国家标识符。我尝试了以下几点:

代码语言:javascript
复制
ldf_new<-list()
countries <-c("SK", "UK")
for (i in 1:length(countries)) {
  currcty1 <- countries[i]
  
  listcsv<-dir(pattern = paste0(currcty1,"(.*)",db_id), recursive = T, full.names = T)
  # print(listcsv)
  ldf_new<-fread(listcsv[i],select = c("PB010","PB020"))
}

这里发生的是,我只得到变量ldf_new中最后一次迭代的结果(在本例中是UK )。有什么办法我可以得到的结果SK和英国。

事先非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 10:05:14

更改循环的最后一行,以便向列表中添加一个新元素,就可以做到这一点:

代码语言:javascript
复制
ldf_new<-list()
countries <-c("SK", "UK")
for (i in 1:length(countries)) {
  currcty1 <- countries[i]
  
  listcsv<-dir(pattern = paste0(currcty1,"(.*)",db_id), recursive = T, full.names = T)
  # print(listcsv)
  ldf_new<-c(ldf_new, fread(listcsv[i],select = c("PB010","PB020")))
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65990427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档