Могу ли я автоматизировать этот код с помощью цикла в R? - PullRequest
0 голосов
/ 14 мая 2019

Могу ли я автоматизировать этот код с помощью цикла?

Я только учусь зацикливаться на R ...


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"

1 Ответ

0 голосов
/ 14 мая 2019

Я думаю, что может сработать следующее:

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 Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...