我正在尝试分析10组数据,我必须导入数据,删除一些值并绘制直方图。我可以单独完成,但自然可以节省很多时间用于循环。我知道这段代码不正确,但我不知道如何指定输入文件的名称以及如何命名R中的每个迭代变量。
par(mfrow = c(10,1))
for (i in 1:10)
{
freqi <- read.delim("freqspeci.frq", sep="\t", row.names=NULL)
freqveci <- freqi$N_CHR
freqveci <- freqveci[freqveci != 0 & freqveci != 1]
hist(freqveci)
}
我想要做的是在我的代码中的每个“i”中都有一个计数器编号。我只是在R中接近这个错误的方式吗?我已经阅读了有关赋值和粘贴函数的内容,但老实说,我不明白如何在这个特定问题中正确应用它们。
答案 0 :(得分:0)
如果有以下几种方式可以做到:
list.files()
获取给定目录的所有文件。您也可以使用正则表达式。 See here 如果名称是连续的,那么您可以使用
for (i in 1:10)
{
filename <- sprintf("freqspeci.frq_%s",i)
freqi <- read.delim(filename, sep="\t", row.names=NULL)
freqveci <- freqi$N_CHR
freqveci <- freqveci[freqveci != 0 & freqveci != 1]
hist(freqveci)
}
使用也可以使用paste()
创建文件名。
paste("filename", 1:10, sep='_')
答案 1 :(得分:0)
您可以将所有数据文件保存到其他空文件夹中。然后获取文件名,如:
filenames <- dir()
for (i in 1:length(filenames)){
freqi <- read.delim("freqspeci.frq", sep="\t", row.names=NULL)
# and here whatever else you want to do on These files
}