从字符串中提取子字符串,以及字符串的其余部分

时间:2017-04-21 13:09:45

标签: r string substr

我想将字符串的第一个字符存储在变量中,将其余字符串存储在另一个变量中。例如:

x <- "foo"
prefix <- substr(x, 1, 1)
suffix <- substring(x, 2)

但是,拨打substrsubstring似乎有点浪费。难道没有办法同时提取子字符串和字符串的其余部分(&#34;差异&#34;在子字符串和原始字符串之间)?

4 个答案:

答案 0 :(得分:10)

也许是这样的:

substring(x, c(1, 2), c(1, nchar(x)))
# [1] "f"  "oo"

答案 1 :(得分:2)

这是使用正则表达式的想法,

strsplit(gsub('^([A-z]{1})([A-z]+)$', '\\1_\\2', x), '_')
#[[1]]
#[1] "f"  "oo"

答案 2 :(得分:1)

您还可以使用str_split包中的stringr

require(stringr)
x<-c("foo", "hello", "world")
str_split(x,"(?<=.{1})",2)
#[[1]]
#[1] "f"  "oo"
#[[2]]
#[1] "h"    "ello"
#[[3]]
#[1] "w"    "orld"

答案 3 :(得分:1)

我们也可以使用separate

中的tidyr
library(tidyr)
separate(data_frame(x), x, into = c('prefix', 'suffix'), sep=1)
# A tibble: 3 × 2
#  prefix suffix 
#* <chr> <chr>
#1     f    oo
#2     h  ello
#3     w  orld

数据

x<-c("foo", "hello", "world")