我对使用R编程非常陌生,但我正在尝试在多个文件中读取目录并为每个文件指定一个唯一的名称。我正在使用R中的Dendrochronology Program Library(包dpIR)和read.tucson
函数读取文件。虽然我使用的是特定的软件包,但我认为我的问题很普遍:
在循环中,我想通过将"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)
}
答案 0 :(得分:27)
我认为你自己给出了答案:你必须使用?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))
我希望这就是你要找的东西。