У меня есть вопрос об обобщении некоторого кода в функцию в R. Ниже приведен код, который я хочу обобщить:
#file name information
years <-c("_1999.XPT","_2003.XPT","_2005.XPT","_2007.XPT","_2009.XPT","_2011.XPT","_2013.XPT","_2015.XPT")
#create initial frame
assign("diabetes", get(paste0("diabetes",years[1])))
#binding rest of frames
for(i in 2:length(years))
{
update_frame <- bind_rows(get("diabetes"),get(paste0("diabetes",years[i])))
assign("diabetes", update_frame)
}
Основная идея заключается в том, что я хочу сделать вертикальное соединение (bind_rows) файлов нескольких лет в один фрейм данных.
Моя попытка решить эту проблему выглядит примерно так:
big_bind <- function(name)
{
#create initial frame
assign(name, get(paste0(name,years[1])))
#binding rest of frames
for(i in 2:length(years))
{
update_frame <- bind_rows(get(name),get(paste0(name,years[i])))
assign(name, update_frame)
}
}
big_bind("diabetes")
Решение, приведенное выше, не работает, и это приводит меня в замешательство, потому что оно работает, если я заменяю переменную имени на «диабет». Чтобы быть немного более конкретным, код работает без ошибок, но ничего не делает. Я думаю, что это как-то связано с тем, как R определяет переменные для функций. Кто-нибудь видит, что мне не хватает или есть решение?