注意:我已经阅读了在字符串中第一次出现整数时分割字符串,但我的要求不同,因为我想使用R。
假设我有以下示例数据框:
> df = data.frame(name_and_address =
c("Mr. Smith12 Some street",
"Mr. Jones345 Another street",
"Mr. Anderson6 A different street"))
> df
name_and_address
1 Mr. Smith12 Some street
2 Mr. Jones345 Another street
3 Mr. Anderson6 A different street
我想在遇到第一个整数时将字符串拆分开。请注意,这些整数的长度可能不同。
期望的输出可以如下所示:
[[1]]
[1] "Mr. Smith"
[2] "12 Some street",
[[2]]
[1] "Mr. Jones"
[2] "345 Another street",
[[3]]
[1] "Mr. Anderson"
[2] "6 A different street"
我已经尝试过以下方法,但我无法正确地得到正则表达式:
# Attempt 1 (Does not work)
library(data.table)
tstrsplit(df,'(?=\\d+)', perl=TRUE, type.convert=TRUE)
# Attempt 2 (Does not work)
library(stringr)
str_split(df, "\\d+")
(?<!\\\d)(?=\\d+)
的零宽匹配进行拆分。正向回顾(?<!\\d)
断言当前字符串位置(将其视为连续字符之间的位置)不是数字前缀。正向预查(?=\\d+)
断言当前字符串位置后跟一个或多个数字。演示 - Cary Swoveland