R - 从多个 txt 文件中提取数值

R - Extracting numeric values from multiple txt files

我一直在尝试从多个文本文件中提取某些值。

dataFiles<-lapply(Sys.glob("treedata*SAMPLE01*ID97*.txt"),read.csv,header=FALSE)
dataFiles

data<-data.frame(dataFiles)

data[grepl("^DBHqsm",data$V1),]
data2<-data[grepl("^DBHqsm*",data$V1),]
data2

到目前为止,这给了我一个 data.frame 的字符串,我希望现在能够从中提取数字,包括小数点,尝试使用 regmatches 和 gregexpr,但删除了 .

               V1            V1.1            V1.2            V1.3            V1.4
13 DBHqsm\t 0.05145 DBHqsm\t 0.05189 DBHqsm\t 0.05245 DBHqsm\t 0.05049 DBHqsm\t 0.05393
              V1.5           V1.6            V1.7
13 DBHqsm\t 0.05126 DBHqsm\t 0.0506 DBHqsm\t 0.04977

感谢您的帮助!

下面的正则表达式删除了任意数量的数字之前的所有非数字字符,然后是一个点。

我们使用前瞻断言(?=)注意我们需要perl = TRUE.

如果您的数据始终遵循您显示的模式,它应该可以工作,例如:

gsub(x = "DBHqsm\t 0.05126", pattern = "\D*(?=\d*?\.)", replacement = "", perl = TRUE)```

而且,您当然可以这样做:

data.frame(
  lapply(iris, function(x) {
    gsub(x = x, pattern = "\D*(?=\d*?\.)", replacement = "", perl = TRUE))
  })
)