Как переименовать кадр данных в цикле 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)
}
Ответы
Ответ 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))
Надеюсь, это то, что вы ищете.