将字符拆分为字母和数字

Wan*_*ang 8 regex split r

我有一个独特的角色,每个字母都跟着一个数字.例如:A1B10C5

我想把它分成letter <- c(A, B, C)number <- c(1, 10, 5)使用R.

akr*_*run 8

我们可以使用正则表达式的外观来区分字母和数字

v1 <- strsplit(str1, "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])", perl = TRUE)[[1]]
v1[c(TRUE, FALSE)]
#[1] "A" "B" "C"

as.numeric(v1[c(FALSE, TRUE)])
#[1]  1 10  5
Run Code Online (Sandbox Code Playgroud)

数据

str1 <- "A1B10C5"
Run Code Online (Sandbox Code Playgroud)

  • 我可能会建议OP将它们放在一起,比如`data.frame(L = v1 [c(TRUE,FALSE)],N = as.numeric(v1 [c(FALSE,TRUE)])) (2认同)

Sag*_*gar 6

str_extract_all 是另一种方法:

library(stringr)

> str <- "A1B10C5"
> str
[1] "A1B10C5"

> str_extract_all(str, "[0-9]+")
[[1]]
[1] "1"  "10" "5" 

> str_extract_all(str, "[aA-zZ]+")
[[1]]
[1] "A" "B" "C"
Run Code Online (Sandbox Code Playgroud)