代码之家  ›  专栏  ›  技术社区  ›  Cairan Van Rooyen

我可以用R中的循环自动执行此代码吗?

  •  -1
  • Cairan Van Rooyen  · 技术社区  · 6 年前

    我可以通过循环自动执行此代码吗?

    我只是在学习循环。。。

    
    event_loggers_es1$main_door_state[event_loggers_es1$main_door_state == "0"] <- "1"
    event_loggers_es2$bathroom_door_state[event_loggers_es2$bathroom_door_state == "0"] <- "1"
    event_loggers_es3$bedroom_door_state[event_loggers_es3$bedroom_door_state == "0"] <- "1"
    event_loggers_es4$bedroom_window_state[event_loggers_es4$bedroom_window_state == "0"] <- "1"
    event_loggers_es5$living_door_state[event_loggers_es5$living_door_state == "0"] <- "1"
    event_loggers_es6$living_window_state[event_loggers_es6$living_window_state == "0"] <- "1"
    event_loggers_es7$balcony_door_state[event_loggers_es7$balcony_door_state == "0"] <- "1"
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   which_command    6 年前

    我认为以下方法可能有效:

    room_types=c('main_door_state','bathroom_door_state',....)
    for(i in 1:7){
        df=get(paste0('event_loggers_es',i)) #store data of interest in one variable
        column_of_interest=df[,colnames(df)==room_types[i]] # specify col
        column_of_interest[column_of_interest == "0"] <- "1" #correction
        df[,colnames(df)==room_types[i]]=column_of_interest # reassign corrected column to df
        assign(paste0('event_loggers_es',i),df) #reassign new df to original 'event_loggers_es*'
    }
    

    然而,我认为您可以让代码以一种比当前更好的方式遍历数据。。。比如评论中推荐的方式。

    或者,如果您的每个数据集都位于单独的CSV文件中,您可以通过这种方式循环访问它们。

    例如:假设您的数据已经存在于单独的CSV文件中(我猜这就是您所拥有的…)-然后,您可以执行以下操作:

    for(i in 1:7){
        df=read.csv(paste0('data_file_',i,'.csv')) #loop through files in directory
        #.... then do something with df...
    }
    

    我认为上述方法可能比将不同的数据帧存储在内存中更好,如1、2、3。。。7. 希望这有帮助。