【发布时间】:2014-04-23 02:53:41
【问题描述】:
我有数百个文本文件,每个文件中包含以下信息:
*****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
我正在使用此代码阅读它们。我想读取所有这些文件,并从每个文件(例如 .24)中“收集”Sen 的统计信息,并与相应的文件名一起编译成一个文件。
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
有人可以帮忙吗?谢谢。
【问题讨论】:
-
S 可能是一个因素,请尝试在您的
strsplit(S, ".*[^(-|\\s).0-9]")调用中将其包装为as.character(S)。另一种选择:如果 Sen Slope 始终在同一行,您可以读取文件并提取该行(行号) -
您从the last time I answered this question 更改了很多代码。我什至只是为你检查了它。什么给了?
-
嗨,理查德,这不是同一个代码吗?我无法区分。我只添加了混合排序。能否请你帮忙? :(
-
在另一篇文章的“TO LOOP OVER MULTIPLE FILES”之后复制并粘贴代码。
mixedsort不在我的答案中。 -
这一行:
grep("SEN SLOPE", X, value = TRUE)什么都不做。它的值未分配,将被垃圾回收。
标签: r