Функция assign
должна вам помочь - она присваивает значение имени, указанному в виде строки. Поэтому следующий код должен делать то, что вы хотите (подсказка: используйте gsub
для очистки несловесных символов для создания правильного имени переменной):
library(readxl)
for (file in list.files(".", pattern = "xls$", full.names = TRUE))
assign(gsub("\\W", "", file), read_excel(file))
Мы видим, что у нас есть два объекта в нашей рабочей области:
> ls()
[1] "file_1xls" "file_2xls"
Теперь посмотрим, что они из себя представляют:
> for(x in ls()) str(get(x))
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 1 obs. of 2 variables:
$ a: num 1
$ b: num 2
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 1 obs. of 2 variables:
$ c: num 4
$ d: num 5