【问题标题】:Importing several files and indexing them导入多个文件并为其编制索引
【发布时间】:2011-12-11 19:47:12
【问题描述】:

我有 n 个文件,file_1、file_2、...、file_n 想要导入和使用。所以我像这样导入文件

files <- list.files(pattern=".txt$") 
for(i in files) { 
    x <- read.table(i, header=TRUE, comment.char = "A", sep="\t")
    assign(i, x)
}

关键是我想同时使用来自不同文件的数据。例如我想计算每个文件第一列的均值向量:

 meanv = mean(file_1$firstcolumn, file_2$firstcolumn, ..., file_n$firstcolumn).

最合乎逻辑的方法是编写一个遍历所有文件的循环(file_1file_2、...、file_n)。在这种情况下,您需要索引文件。有什么解决办法吗?或者有没有其他的解决方案。

【问题讨论】:

    标签: file r indexing import


    【解决方案1】:

    只需使用一个列表:

    ##Generate some test data
    R> dd1 = data.frame(V1 = rnorm(10), V2 = rnorm(10))
    R> dd2 = data.frame(V1 = rnorm(10), V2 = rnorm(10))
    #Create an empty list
    R> l = list()
    ##In your example, you would have something like:
    ##l[[i]] = read.table(....)
    R> l[[1]] = dd1; l[[2]] = dd2
    
    ##Now use lapply to calculate the column means for each data frame
    R> lapply(l, colMeans)
    [[1]]
         V1      V2 
    -0.6805 -0.0767 
    
    [[2]]
          V1       V2 
    0.253563 0.006207 
    

    【讨论】:

    • 或者分配给原始循环中的环境并使用eapply
    【解决方案2】:

    这是一种方法

    # list files with .txt extension
    files  <- list.files(pattern = '\\.txt$')
    
    # read files into a list of tables
    tables <- lapply(files, read.table, header = TRUE, comment = 'A', sep = '\t')
    
    # compute mean of first column
    meanv <- lapply(tables, colMeans) 
    

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2020-12-27
      • 2020-05-18
      • 2020-10-07
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多