在R中动态创建一个新列

在R中动态创建一个新列,r,list,dataframe,for-loop,assign,R,List,Dataframe,For Loop,Assign,我试图改进代码,避免重复导入多个同名结构的CSV: iOS_Weekly_Active_Users_20210301 <- read.csv("iOS_Weekly_Active_Users_20210301.csv", header = T) iOS_Weekly_Active_Users_20210301$WeekDate <- "2021-03-01" iOS_Weekly_Active_Users_20210308 <- read

我试图改进代码,避免重复导入多个同名结构的CSV:

iOS_Weekly_Active_Users_20210301 <- read.csv("iOS_Weekly_Active_Users_20210301.csv", header = T)
iOS_Weekly_Active_Users_20210301$WeekDate <- "2021-03-01"
iOS_Weekly_Active_Users_20210308 <- read.csv("iOS_Weekly_Active_Users_20210308.csv", header = T)
iOS_Weekly_Active_Users_20210308$WeekDate <- "2021-03-08"
iOS_Weekly_Active_Users_20210315 <- read.csv("iOS_Weekly_Active_Users_20210315.csv", header = T)
iOS_Weekly_Active_Users_20210315$WeekDate <- "2021-03-15"
iOS_Weekly_Active_Users_20210322 <- read.csv("iOS_Weekly_Active_Users_20210322.csv", header = T)
iOS_Weekly_Active_Users_20210322$WeekDate <- "2021-03-22"

不建议在全局环境中创建多个对象。这可以通过在
列表中存储
(用于lambda的
R 4.1.0
\(星期日)
)或使用
函数(星期日)
轻松完成

week_date_list <- c("20210301", "20210308", "20210315", "20210322" )

for(week_date in week_date_list){
  
  assign(paste0("iOS_Weekly_Active_Users_", week_date), read.csv(paste0("iOS_Weekly_Active_Users_", week_date, ".csv"), header = T))
         
}
lst1 <- lapply(week_date_list, \(week_date) {
          tmp <- read.csv(paste0("iOS_Weekly_Active_Users_", 
                            week_date, ".csv"), header = TRUE)
          tmp$WeekDate <- as.Date(week_date, format = "%Y%m%d")
          tmp
   })
for(week_date in week_date_list){
  tmp <- read.csv(paste0("iOS_Weekly_Active_Users_", week_date, ".csv"),
             header = TRUE)
   tmp$WeekDate <- as.Date(week_date, format = "%Y%m%d")
   assign(paste0("iOS_Weekly_Active_Users_", week_date), tmp)
 }