我正在尝试构建一个包含矢量操作的自定义函数。手动输入路径和数据名称后,该功能运行良好。每个文档都是一个.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向量操作中?
答案 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)