Когда у вас есть несколько переменных одного типа, , особенно , когда вы нумеруете их, как вы это делали, отступайте назад и заменяйте их одной переменной списка. Я не рекомендую делать то, что предложил другой ответ.
То есть вместо M1_I
... M4_I
и M1_U
... M4_U
, есть две переменные m_i
и m_u
(использование строчных букв в именах переменных является общепринятым), каждый из которых представляет собой список из четырех data.tables.
В качестве альтернативы вы можете захотеть использовать переменную single , m
, который содержит вложенные списки data.tables (m = list(list(i = …, u = …), …)
).
Предполагая первое, вы можете выполнить итерацию по ним следующим образом:
give_this_a_meaningful_name = function (df) {
dt <- data.table(df)
dt[, I := as.numeric(gsub(",", ".", I))]
dt[, day := substr(t, 1, 10)]
dt[, hour := substr(t, 12, 16)]
dt[, list(median_I = median(I, na.rm = TRUE)), by = .(day, hour)]
}
m_i_median = lapply(m_i, give_this_a_meaningful_name)
(Обратите внимание также на введениепоследовательный интервал между операторами; хорошая читаемость имеет первостепенное значение для написания кода без ошибок.)