我想将字符串的第一个字符存储在变量中,将其余字符串存储在另一个变量中。例如:
x <- "foo"
prefix <- substr(x, 1, 1)
suffix <- substring(x, 2)
但是,拨打substr
和substring
似乎有点浪费。难道没有办法同时提取子字符串和字符串的其余部分(&#34;差异&#34;在子字符串和原始字符串之间)?
答案 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")