我有一些类似以下的文字:
foo_text <- c(
"73000 PARIS 74000 LYON",
"75 000 MARSEILLE 68483 LILLE",
"60 MARSEILLE 68483 LILLE"
)
Run Code Online (Sandbox Code Playgroud)
我想在第一个单词之后将每个元素分成两部分。预期输出:
"73000 PARIS" "74000 LYON" "75000 MARSEILLE" "68483 LILLE" "60 MARSEILLE" "68483 LILLE"
Run Code Online (Sandbox Code Playgroud)
请注意,原文中两个元素之间的空格数不一定相同(例如 PARIS 和 74000 之间的空格数与 MARSEILLE 和 68483 之间的空格数不同)。另外,有时第一个数字中有空格(例如 75 000),有时则没有(例如 73000)。
我尝试调整这个答案但没有成功:
(delimitedString = gsub( "^([a-z]+) (.*) ([a-z]+)$", "\\1,\\2", foo_text))
Run Code Online (Sandbox Code Playgroud)
知道该怎么做吗?
Tim*_*sen 13
我们可以在这里尝试使用strsplit如下:
foo_text <- c(
"73000 PARIS 74000 LYON",
"75 000 MARSEILLE 68483 LILLE",
"60 MARSEILLE 68483 LILLE"
)
output <- unlist(strsplit(foo_text, "(?<=[A-Z])\\s+(?=\\d)", perl=TRUE))
output
[1] "73000 PARIS" "74000 LYON" "75 000 MARSEILLE" "68483 LILLE"
[5] "60 MARSEILLE" "68483 LILLE"
Run Code Online (Sandbox Code Playgroud)
这里使用的正则表达式模式表示在以下情况下进行分割:
(?<=[A-Z]) what precedes is an uppercase letter
\\s+ split (and consume) on one or more whitespace characters
(?=\\d) what follows is a digit
Run Code Online (Sandbox Code Playgroud)