Рассмотрите возможность инкапсуляции вашего процесса в определенную функцию и используйте функциональные объекты без необходимости именования или удаления из среды. Кроме того, используйте paste
(или его непространственную оболочку, paste0
) на самом столбце, используемом для разбиения. Ниже приведены два альтернативных эквивалентных решения:
Функция
proc_match <- function(sub) {
write.csv(sub, file = paste0("data_", sub$nr[[1]], ".csv"))
match_result <- matchit(am ~ mpg + wt, method = "nearest", data = sub)
matched_data <- match.data(match_result)
write.csv(matched_data, file = paste0("matched_data_", sub$nr[[1]], ".csv"))
}
split
+ lapply
# ADD NEW GROUPING COLUMN
mtcars$grp <- rep(1:ceiling(nr/n), each=n, length.out=nr)
# RUN PROCESS TO RETURN NOTHING
lapply(split(mtcars, mtcars$grp), proc_match)
[ 1111] by
# ADD NEW GROUPING COLUMN
mtcars$grp <- rep(1:ceiling(nr/n), each=n, length.out=nr)
# RUN PROCESS TO RETURN NOTHING
by(mtcars, mtcars$grp, proc_match)
Когда вы создаете столбец как BIGINT (44)
, «44» - это ширина экрана - она не влияет на диапазон значений, которые вы можете сохранить, или скорость при для которого они извлекаются.
Для автоматического увеличения идентификатора вы хотите использовать UNSIGNED
число, например BIGINT (44) UNSIGNED
. Это удвоит диапазон значений и добавит дополнительное ограничение, что, как правило, хорошо.
Без знака INT будет храниться до 4 294 967 295 Неподписанный BIGINT будет хранить до 18,446,744,073,709,551,615 - вы не будете его заполнять в ближайшее время.
Вы не говорите, насколько быстро растет ваш максимальный идентификатор - если вы не вставляете много строк, вам следует придерживаться НЕ ПОДПИСАН INT
, поскольку он занимает меньше места.
Я думаю, что любой первичный ключ по умолчанию будет беззнаковым. В любом случае использование отрицательных чисел для первичных ключей в лучшем случае не одобряется и мешает работе.