我创建了一个循环来迭代一组文件,并将文件中的数据分配给变量
for(i in 1:8){
infile <-paste("coauthor", i,".csv",sep="")
coa[i]<-read.csv(infile,header = TRUE, sep="\t")
}
然而我一直在犯错误
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
object 'infile' not found
且更频繁
Error in paste("coauthor", i, ".csv", sep = "") : object 'i' not found
我在这里缺少什么?
答案 0 :(得分:2)
首先,不需要for
个循环。其次,如果你这样做,你需要预先定义coa
。第三,您必须适当地setwd(...)
或read.csv(...)
找不到文件。
setwd("<directory with coauther files...>")
# this just creates a bunch of files so we can read them back in...
df <- data.frame(x=1:3, y=4:6, z=7:9)
lapply(1:5, function(i)write.csv(df,paste0("coauthor",i,".csv")))
# this is the code that reads them in. This is all you need.
coa <- lapply(1:5, function(i)read.csv(paste0("coauthor",i,".csv")))
请注意,coa
现在是一个包含5个元素的列表,每个元素都包含其中一个文件的内容。
coa[1]
# [[1]]
# X x y z
# 1 1 1 4 7
# 2 2 2 5 8
# 3 3 3 6 9