[英]How do I rename a data-frame in a for-loop
我對使用R編程非常陌生,但我正在嘗試在多個文件中讀取目錄並為每個文件指定一個唯一的名稱。 我正在使用R(包dpIR)中的Dendrochronology Program Library和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)
}
我想你自己給出了答案:你必須使用?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))
我希望這就是你要找的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.