指定连续文件名并在for循环中为带有计数器变量的连续向量分配

时间:2016-08-10 09:43:22

标签: r

我正在尝试分析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中接近这个错误的方式吗?我已经阅读了有关赋值和粘贴函数的内容,但老实说,我不明白如何在这个特定问题中正确应用它们。

2 个答案:

答案 0 :(得分:0)

如果有以下几种方式可以做到:

  1. 使用list.files()获取给定目录的所有文件。您也可以使用正则表达式。 See here
  2. 如果名称是连续的,那么您可以使用

    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)                                                  
    }    
    
  3. 使用也可以使用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 }