【发布时间】:2021-05-01 05:24:47
【问题描述】:
我想一次将一个字符串对象拆分为两个字符串,直到它们到达最后一个字符串。
假设您有字符串“BANANAS”,我想将字符串拆分为两个获得 BA AN NA AN NA AS。
【问题讨论】:
我想一次将一个字符串对象拆分为两个字符串,直到它们到达最后一个字符串。
假设您有字符串“BANANAS”,我想将字符串拆分为两个获得 BA AN NA AN NA AS。
【问题讨论】:
一种方法是拆分字符串。
split_string <- function(x) {
lapply(strsplit(x, ''), function(x) paste0(head(x, -1), tail(x, -1)))
}
split_string(c('BANANAS', 'APPLE'))
#[[1]]
#[1] "BA" "AN" "NA" "AN" "NA" "AS"
#[[2]]
#[1] "AP" "PP" "PL" "LE"
【讨论】:
我们可以使用
split_string <- function(x) {
lapply(strsplit(x, ""), function(x) paste0(x[-length(x)], x[-1]))
}
-输出
split_string(v1)
#[[1]]
#[1] "BA" "AN" "NA" "AN" "NA" "AS"
#[[2]]
#[1] "AP" "PP" "PL" "LE"
或者我们可以使用正则表达式环顾而无需拆分
out <- gsub('(?<=.)(.)(?=.)', '\\1 \\1', v1, perl = TRUE)
out
#[1] "BA AN NA AN NA AS" "AP PP PL LE"
如果我们需要单独的子串,用空格分割
strsplit(out, "\\s+")
v1 <- c("BANANAS", "APPLE")
【讨论】:
> string <- "BANANAS"
> # split and use embed
> x <- embed(str_split(string, '')[[1]], 2)[, 2:1] # reverse columns
> apply(x, 1, paste, collapse = '')
[1] "BA" "AN" "NA" "AN" "NA" "AS"
【讨论】: