R 如何在两个空格之间提取子字符串

R 如何在两个空格之间提取子字符串,r,regex,R,Regex,我有一根绳子 空运9964 1602869084038 RFND 2018年11月1日 非CX07/1819/071443 18年9月30日239982.00 10071.00 0.00%0.00 0.00%0.00 12.00 28798.00%0.00 278851.00 我想提取239982.00,我知道它位于第8和第9空间之间 因此,输出应为239982.00 我试图给出239982.00的索引,将所有条目存储在一个列表中,并使用lst[n]获取第n个元素,但在这个解决方案中,问题在于并

我有一根绳子

空运9964 1602869084038 RFND 2018年11月1日 非CX07/1819/071443 18年9月30日239982.00 10071.00 0.00%0.00 0.00%0.00 12.00 28798.00%0.00 278851.00

我想提取239982.00,我知道它位于第8和第9空间之间 因此,输出应为239982.00

我试图给出239982.00的索引,将所有条目存储在一个列表中,并使用lst[n]获取第n个元素,但在这个解决方案中,问题在于并非所有字符串的顺序都是固定的

lst2[53]

在第9次出现非空白字符后,使用sub捕获非空白字符,后跟空白字符S\\S+\\S+{9}

x = "Air transport 9964 1602869084038 RFND 01-Nov-18 NON CX07/1819/071443 30-Sep-18 239982.00 10071.00 0.00% 0.00 0.00% 0.00 12.00 28798.00 0% 0.00 278851.00"
i = 9
j = 10
ind = gregexpr(pattern = " ", text = x)[[1]]
substring(text = x, first = ind[i] + 1, last = ind[j] - 1)
#[1] "239982.00"
或者用词更紧凑

数据 或者,更一般地,在x是向量的情况下:

sapply(strsplit(x,' '), `[`, 10)
我们还可以使用read.table:


我想它实际上在给定字符串的第9和第10个空格之间对不起,我在主题行中引用了错误的位置
library(stringr)
word(x, 10)
#[1] "239982.00"
x <-  "Air transport 9964 1602869084038 RFND 01-Nov-18 NON CX07/1819/071443 30-Sep-18 239982.00 10071.00 0.00% 0.00 0.00% 0.00 12.00 28798.00 0% 0.00 278851.00"
strsplit(x,' ')[[1]][10]
# [1] "239982.00"
sapply(strsplit(x,' '), `[`, 10)
text = "Air transport 9964 1602869084038 RFND 01-Nov-18 NON CX07/1819/071443 30-Sep-18 239982.00 10071.00 0.00% 0.00 0.00% 0.00 12.00 28798.00 0% 0.00 278851.00"

read.table(text = text)$V10
# [1] 239982
read.table(text = text)[,10]
# [1] 239982