2016-12-22 20 views
1

У меня есть повторяющаяся задача извлечения частей списка и сохранения их в новое имя переменной.повторяющаяся задача в R с символьной строкой с использованием sapply или цикла for

я могу использовать aaa_report <- original[["aaa"]] и у меня есть новая переменная с именем aaa_report, которая является раздел aaa из переменной списка original

Теперь я хотел бы автоматизировать повторяющиеся задачи:

aaa_report <- original[["aaa"]]

bbb_report <- original[["bbb"]]

ccc_report <- original[["ccc"]]

...

У меня есть отдельный список «символов» переменный с именем dept со всеми именами dept <- c("aaa", "bbb", "ccc", "...")

я пытаюсь использовать sapply и получить эту ошибку.

sapply(dept, function(x) x"_report" <- original[[x]]) 

Error: unexpected string constant in "sapply(dept, function(x) x"_report""

Я попробовал все apply семью и for loop не повезло.

for(x in dept){ 
    x"_report" <- original[[x]] 
} 

Я новичок в R и программирование в целом, поэтому любой совет будет очень полезен.

+0

Почему бы просто не хранить их в списке и не ссылаться на них при необходимости? Это кажется более разумным способом. См. Ответ gregor на [этот пост] (http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames) для ряда полезных методов для запуска через именованный список элементы. – lmo

+0

Я буду использовать фрагменты списка позже, объединенные по-другому. – adm

+0

Если вы действительно хотите это сделать (сохранение содержимого в списках почти всегда лучше), используйте 'get (paste0 (x," _report "))' –

ответ

0

Вы были близки, используйте assign функцию:

for(x in dept) assign(paste0(x, "_report"), original[[x]]) 

Это не будет работать с apply функциями, так как задание будет находиться в локальной среде функции apply.

Как указано в комментариях, сохранить все в списке всегда лучше.