Подтвердить что ты не робот

Как переименовать кадр данных в цикле for-loop

Я очень новичок в программировании с помощью R, но я пытаюсь прочитать в нескольких файлах для каталога и дать им каждое уникальное имя. Я читаю файлы с использованием библиотеки программ Dendrochronology в R (пакет dpIR) и функции read.tucson. Хотя я использую определенный пакет, я думаю, что мой вопрос довольно общий:

В цикле я хочу создавать файлы, объединяя "t" с каждым именем отдельных файлов. Итак, если у меня есть файл с именем "2503" в моем каталоге, я хочу создать dataframe в R, называемом "t2503". Затем я хочу прочитать данные с использованием функции r.tucson для каждого блока данных. Вместо того, чтобы назначать данные для чтения в dataframe, я просто переписываю конкатенацию данными. Может кто-нибудь помочь мне выяснить, какой шаг мне не хватает?

Вот код, который я пытаюсь использовать:

#set to appropriate directory
setwd("C:/work")

#get a list of files in the directory
files <- list.files()
numfiles <- length(files)

for (i in 1:numfiles)
{
    name<-paste("t",files[i],sep="")
    name<-read.tucson(files[i],header=NULL)
}
4b9b3361

Ответ 1

Думаю, вы сами дали ответ: вы должны использовать ?assign.

Попробуйте что-то вроде этого:

for (i in 1:5) {
  assign(paste0("DF", i), data.frame(A=rnorm(10), B=rnorm(10)))
}

Этот цикл проходит через целые числа от 1 до 5 и создает пять данных. "DF1" - "DF5". Для вашего примера вы должны просто заменить

name<-read.tucson(files[i],header=NULL)

с

assign(name, read.tucson(files[i],header=NULL))

Обратите внимание, однако, что name является базовой функцией в R, поэтому я бы использовал другое соглашение об именах или просто пропустил первую строку:

assign(paste("t",files[i],sep=""), read.tucson(files[i],header=NULL))

Надеюсь, это то, что вы ищете.