我想让R读取名为的五个文件
"alpha_rarefaction_8000_0.txt"…"alpha_rarefaction_12000_0.txt"
并将其写入
"alpha8000"。。。"alpha12000"。
我使用了以下代码,但它不起作用。请帮忙。我的代码出了什么问题?
我试着搜索"如何在R函数中使用索引"或">如何在R中编写可执行循环",但没有任何帮助。在谷歌上搜索答案时,我应该使用什么样的搜索策略来获得有效的结果?
for(i in seq(8000,12000,by=1000)) {
paste("rare",i,sep="")<-read.table(paste("alpha_rarefaction",i,"0.txt",sep="_"))
}
或
read.rare<-function(i){
paste("rare",$i,sep="")<-read.table(paste("alpha_rarefaction",$i,"0.txt",sep="_"))
}
i<-seq(8000,12000,by=1000)
read.rare(i)
我建议您将文件读取到列表中,可能是这样做的-
## create the sequence for the file names
s <- 8:12 * 1e3
# [1] 8000 9000 10000 11000 12000
## create the full file names from the sequence above
files <- sprintf("alpha_rarefaction_%d_0.txt", s)
# [1] "alpha_rarefaction_8000_0.txt" "alpha_rarefaction_9000_0.txt"
# [3] "alpha_rarefaction_10000_0.txt" "alpha_rarefaction_11000_0.txt"
# [5] "alpha_rarefaction_12000_0.txt"
## Now we can loop the file names, reading the data into a list
## and setting the names for each element
datalist <- setNames(lapply(files, read.table), paste0("alpha", s))
这将把所有的数据帧保存在一个列表中,这将使以后使用它们变得容易得多。您可以使用$
运算符单独访问它们。他们的名字是
names(datalist)
[1] "alpha8000" "alpha9000" "alpha10000" "alpha11000" "alpha12000"
因此,例如,datalist$alpha9000
访问第二数据集(或者与datalist[[2]]
一起访问)。