我有数百个文本文件,每个文件中包含以下信息:
*****Auto-Correlation Results******
1 .09 -.19 .18 non-Significant
*****STATISTICS FOR MANN-KENDELL TEST******
S= 609
VAR(S)= 162409.70
Z= 1.51
Random : No trend at 95%
*****SENs STATISTICS ******
SEN SLOPE = .24
我正在使用此代码阅读它们。我想阅读所有这些文件,并且"收集"来自每个文件的Sen's统计信息(例如.24)并将其与相应的文件名一起编译成一个文件。
require(gtools)
GG <- grep("*.txt", list.files(), value = TRUE)
GG<-mixedsort(GG)
S <- sapply(seq(GG), function(i){
X <- readLines(GG[i])
grep("SEN SLOPE", X, value = TRUE)
})
spl <- unlist(strsplit(S, ".*[^(-|\\s).0-9]"))
SenStat <- as.numeric(spl[nzchar(spl)])
SenStat<-data.frame( SenStat,file = GG)
write.table(SenStat, "sen.csv",sep = ", ",row.names = FALSE)
但现在我收到了这个错误:
Error in strsplit(S, ".*[^(-|\\s).0-9]") : non-character argument
有人可以帮忙吗?感谢。
答案 0 :(得分:0)
这不是this bounty question的副本吗? 无论如何:在这里重新发表我的答案!
步骤1:将完整fileNames
保存在单个变量中:
fileNames <- dir(dataDir,full.names=TRUE)
步骤2:让我们读取并处理其中一个文件,并确保它给出正确的结果:
data.frame(
file=basename(fileNames[1]),
SEN.SLOPE= as.numeric(tail(
strsplit(grep('SEN SLOPE',readLines(fileNames[1]),value=T),"=")[[1]],1))
)
步骤3:在所有fileNames
do.call(
rbind,
lapply(fileNames,
function(fileName) data.frame(
file=basename(fileName),
SEN.SLOPE= as.numeric(tail(
strsplit(grep('SEN SLOPE',
readLines(fileName),value=T),"=")[[1]],1)
)
)
)
)
希望这会有所帮助!!