r - 如何构建一个循环来导入多个数据帧并以相同的方式修改它们?

标签 r database loops

从 1996 年 1 月到 2018 年 12 月,我每个月都有一个新闻数据框,这意味着 264 个数据框。它们都具有相同的结构,我需要以相同的方式修改它们。例如,我的一个数据框代码大致如下:

#import data (only one column $V1)
News.9601 <- read.delim("D:/Reuters/1996/News.RTRS.199601.0210.txt.gz", header=FALSE,quote = "") 

#split the first columns in more variables
News.9601 = News.9601 %>% 
  mutate(v2=lapply(strsplit(as.character(V1), "\"mimeType\""), "[", 2))

#select only those news that include "R:"
news.9601=news.9601[grepl('R:',news.9601$v2),]


#select only those news that include certain "tags" in $v2

for(i in 1:30){
  tags_split1=paste(tags_split[[i]],collapse = "|")
  tags_split1=gsub("[[:space:]]", "", tags_split1)
  nam=paste("A", i, sep = "")

  assign(nam,news.9601[grepl(tags_split1,news.9601$v2,perl = T),]
         )
}
news.9601=rbind(A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,
                 A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,A29,A30)

news.9601=news.9601[!duplicated(news.9601),]

#Some text analysis, rx.app is a matching rule
news.9601 = news.9601 %>%
  mutate(approach <- regmatches(title_body, gregexpr(rx.app, v2, perl=TRUE)),
         approach=lengths(approach))

write.csv(news.9601, file = "news.9601.csv")
rm(news.9601)

这是我必须为每个月的数据做的,除了数据框名称“D:/Reuters/1996/News.RTRS.199601.0210.txt.gz”,其中年份“/1996/”和文件名根据月份和年份而变化。

有没有什么方法可以循环导入和运行我所有月份数据的上述代码,而不是重写相同的代码 264 次?

非常感谢!

最佳答案

这样的东西应该可以工作

files <- list.files(path="folderpath/", full.names=TRUE, recursive=FALSE)

files 将所有文件名存储在该文件夹中,然后逐一循环

for (file in files){

 }

关于r - 如何构建一个循环来导入多个数据帧并以相同的方式修改它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57270870/

相关文章:

r - 如何使用来自 rjags/JAGS 的估计值来预测值

r - 无法使用 FreeTDS 连接到 Docker 容器内的 Microsoft SQL Server

r - 环境和命名空间的区别

php - 我无法将 IP 添加到我的数据库中。为什么?

php - 显示数据库中的图像时 (PHP),ANSI <--> UTF-8 字符集问题

mysql - 存储 2 亿条记录的最节省空间的方法是什么?

r - 平台中立的方式来在创建晕影时检查程序是否存在(例如pdfcrop)

python - 使用 python 重新组织具有一对多关系的列表

mysql - 在 MySQL 存储过程中执行多个游标时遇到问题

java - 尝试对 String ArrayList 进行排序时,排序方法不起作用