19

我对使用 R 编程非常陌生,但我正在尝试读取一个目录的多个文件,并为每个文件指定一个唯一的名称。我正在阅读使用 R 中的 Dendrochronology 程序库(包 dpIR)和read.tucson函数的文件。虽然我使用的是特定的包,但我认为我的问题相当笼统:

在循环中,我想通过将 a"t"与每个单独的文件名连接来创建文件。因此,如果我的目录中有一个名为的文件"2503",我想在 R 中创建一个名为"t2503". 接下来,我想使用该r.tucson函数将数据读取到每个数据帧。我没有将读入的数据分配给数据帧,而是用数据覆盖连接。有人可以帮我弄清楚我错过了什么步骤吗?

这是我尝试使用的代码:

#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)
}
4

1 回答 1

31

我想你自己给出了答案:你必须使用?assign.

尝试这样的事情:

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

这循环从 1 到 5 的整数并创建五个 data.frames “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))

我希望这就是你要找的。

于 2012-12-18T20:30:12.353 回答