Я ищу короткое решение для создания и использования разных таблиц для циклов, где переменная цикла является частью имени.Создайте и используйте разные таблицы для for-loops в R короче.
Я нашел следующие решения:
Если я хочу создать таблицы в цикле я могу использовать назначить вместе с пастой. Например:
for (f in files){
assign(paste0("A_",f), readWorksheetFromFile(paste0(f,".xlsx")))}
И если я хочу использовать эти таблицы, я могу использовать Eval, разобрать и paste0 следующим образом:
for(f in files){
x <- eval(parse(text=paste0("A_",f)))}
Проблема заключается в том, что я должен использовать эти конструкции очень часто и код становится очень длинным. У кого-нибудь есть более короткое решение, чтобы сделать это в R?
E.g. в SAS я мог бы использовать что-то вроде (как я помню)
x = A_&f;
вместо того
x <- eval(parse(text=paste0("A_",f)))
Edit
На основе следующих ответов я нашел это решение:
В процесс создания объектов в цикле Я могу использовать функцию
`%c%` = function(a, b) paste0(a, b)
следующим образом для двух или более строк:
"A_" %c% f
"A_" %c% f %c% r
В случае, если я хочу использовать этот объект в цикле можно использовать функцию:
`%u%` = function(a, b) eval(parse(text=paste0(a,b)))
следующим образом для двух или более строк:
"A_" %u% f
"A_" %c% f %u% r
Обратите внимание, что я использовал% u% только на последнем шаге.
Спасибо. Это может помочь в особых ситуациях. Но это не намного короче, чем мое другое решение. –
@ThomasR, см. Править. – mikeck
Это решение не сработало в моем случае, но, по крайней мере, это был отличный пример. Основываясь на вашей идее, я создал свое окончательное решение. См. Редактирование моего оригинального сообщения. Спасибо, что помогли мне не только с этой проблемой, но и понять, как создавать функции в целом. –