首页 > 解决方案 > 使用 R 在空字符串之后提取值

问题描述

我设法从 3 个不同的 .txt 文件中获取这些行。我使用“grep”命令提取包含单词“沸腾”的行。但是我只想要这个值(见结果)。那么如何使用 grep 命令提取空字符串后的所有值,并将这些值仅保存在 csv/excel 文件中

[1] "  Boiling:                                      80 - 93 °C (176°F - 199.4 °"
[1] "  Boiling:                                      > 93.3 °C (> 199.94 °F) "
[1] "  Boiling:                                      80 - 93 °C (176° closed cup"

结果应如下所示(去掉引号):

80 - 93 °C (176°F - 199.4 °
> 93.3 °C (> 199.94 °F)
80 - 93 °C (176° closed cup

下面是我的代码

my_txt<-list.files("G:\\FlashPointTest\\Test2\\sdstotextorigin", 
                   pattern = ".txt$",full.names = TRUE,recursive = FALSE )

lst<-vector("list",length(my_txt))
names(lst)<-my_txt

for(i in 1:length(my_txt)){
  doc<-readLines(my_txt[i])
  doc<-doc[grepl("Boiling",doc)]
  lst[[my_txt[[i]]]]<-doc
}

非常感谢你的帮助!

标签: r

解决方案


这里有很多方法:(尝试最适合您的完整数据的方法)

数据:

vec<-
c("Boiling:                                      80 - 93 °C (176°F - 199.4 °",
"  Boiling:                                      > 93.3 °C (> 199.94 °F) ",
"  Boiling:                                      80 - 93 °C (176° closed cup")

library(magrittr);library(stringr);

1:

vec %>% sub("Boiling:","",.) %>% trimws

2:

vec %>% stringr::str_extract("(\\d|>).*")

3:

vec %>% stringr::str_extract("(?<=\\s{5}).*$") %>% trimws

推荐阅读