从多个文件的操作中获取结果作为双列矩阵

时间:2015-03-17 18:39:07

标签: r matrix

我正在使用for循环来遍历目录中的文件。然后我对每个文件中的数据进行一组处理,并写入一个包含10行的矩阵。 这是我的代码。

for(i in 1:length(testData))
      {
        MAE[1,i] = abs(forecastData$mean[i] - testData[i])
      }

现在我希望做到以下几点:

  • 在此矩阵中添加行
  • 将其作为一个值写入单独的两列矩阵中,文件名为第一列,值为第二列
  • 按照值(不是文件名)
  • 对其进行排序
  • 全局访问它(即,在遍历目录的for循环之外)。

此矩阵的行数将是目录中的文件总数(动态分配是我的意思)。我怎样才能实现这个功能?

1 个答案:

答案 0 :(得分:1)

由于没有例子,很难给出全面的答案。但是,一般情况下,我会使用list.files()来获取所有相关文件的向量,然后编写一个函数,对每个文件执行所需的数学运算。这样的功能可能看起来像这样。

func.file_math <- function(file.name) {

    <insert file operations>
    return(list(file.name=file.name,
                number=number))
}

使用sapply(),您可以对file.list()的所有内容进行操作。完成后,您只需使用do.call()rbind.data.frame即可获得结果的数据框。

yourfiles <- list.files("/some/path/")
file_math <- sapply(X=yourfiles,
                    FUN=func.file_math,
                    simplify=FALSE,
                    USE.NAMES=TRUE)
file_math.df <- do.call(what=rbind.data.frame,
                        args=file_math)