Вы используете assign
для создания data.frames
. Здесь вы можете изменить имя:
assign(
gsub("-", "_", gsub(" ","",substr(file, 1, perpos-1))),
read.csv(paste(path,file,sep="")))
Однако назначьте, возможно, не лучший вариант, и, возможно, вам следует рассмотреть возможность хранения списка фреймов данных вместо каждого фрейма данных отдельно, например, как это (не проверено):
list_of_dataframes <- lapply(files, function(file) read.csv(paste(path,file,sep=""))))
Тогда все ваши фреймы данных будут находиться в list
. Вы можете легко присвоить имена этому списку:
names(list_of_dataframes) <- gsub("[ -]", "_", gsub("\\.csv$", "", files)))
Если вы не хотите перечитывать свои данные и хотите переименовать существующие фреймы данных, вы можете сделать следующее:
all_obj <- ls()
for (old_name in all_aobj) {
new_name <- make.names(old_name) ## get a syntactical correct name
if (new_name != old_name) {
assign(new_name, get(old_name))
rm(old_name)
}
}
Примечание. Этот код также переименует действительные инфиксные операторы, такие как %||%
, поэтому рекомендуется начинать с лучшего выбора all_obj
.