我读了多个.csv,现在想要在循环中更改所有列名。我只能找到如何更改单个表的名称:
colnames(w01_10temp) <- c("date", "time", "temp", "na")
我还需要R.中的.csv文件。在我之前:
filenames <- list.files(path=getwd())
numfiles <- length(filenames)
for (all_temp in c(1:numfiles)) {
filenames[all_temp] <- paste(filenames[all_temp],sep="")
assign(gsub([.]ASC$","temp",filenames[all_temp]),read.delim2(filenames[all_temp], fileEncoding="ISO-8859-15", skip = 4)) }
所以我尝试将lapply放入循环中,但没有成功:
for (all_temp in lapply(filenames,myReadTable)) {
filenames[all_temp] <- paste(filenames[all_temp],sep="")
}
答案 0 :(得分:7)
编写包装函数:
myReadTable<-function(file){
read.table(file,...)->x
names(x)<-c("date","time","temp","na")
return(x)
}
然后lapply
通过文件名向量来获取数据框列表(这比使用全局变量更易于管理)。
lapply(c('fileA.csv','fileB.csv','fileC.csv'),myReadTable)