通过文件夹

时间:2017-11-28 11:22:16

标签: r

我正在尝试构建一个包含矢量操作的自定义函数。手动输入路径和数据名称后,该功能运行良好。每个文档都是一个.txt文件,只包含一列中的数字。 但是文件夹中有大量文件,我的问题是如何通过每个.txt文件循环我的函数?

我曾尝试使用此代码,但我没有做任何事情。

filenames <- list.files(path=("/folder/"), pattern=".txt")
ldf <- lapply(filenames, read.table)
lapply(ldf, sumfun)

这是代码的简化版本

    dataframe <- read.table('folder/dataframe.txt')
    sumfun <- function(a){
      x <- dataframe[1:length(dataframe)-1] 
      y <- dataframe[-1]
      dx <- y-x
      SUM1 <-  sum(dx[which(dx>1)]))^2
      SUM2 <- sum(dx[which(dx<1)]))^2
      SUMtot <- SUM1 + SUM2
       return(SUMtot)
    }

sumfun(dataframe)

据我了解,问题可能出在x和y向量操作中?

1 个答案:

答案 0 :(得分:1)

问题在于你的功能。您将参数定义为a,但使用dataframe代替。 )操作中还有额外sum()个。它应该是:

sumfun <- function(a){
  x <- a[1:length(a)-1] 
  y <- a[-1]
  dx <- y-x
  SUM1 <- sum(dx[which(dx>1)])^2
  SUM2 <- sum(dx[which(dx<1)])^2
  SUMtot <- SUM1 + SUM2
  return(SUMtot)
}  

此外,如果您的工作目录不在同一位置,则您收到的文件名可能会导致问题。以下添加将解决这个问题:

filenames <- list.files(path=("/folder"), pattern=".txt", full.names = T)