r - 在交替索引上拆分字符串

标签 r string split

我有一个类似于 "HLeelmloon" 的字符串这是两个词交织在一起。我怎样才能把它分成两个单独的词,在交替的字母上分开?

我可以用 strsplit()和一个 for循环将交替字母分配给两个新向量,然后加入列表,但这似乎很冗长:

string <- "HLeelmloon"
split<-el(strsplit(string,''))

> split
[1] "H" "L" "e" "e" "l" "m" "l" "o" "o" "n"

word1<-c()
word2<-c()
for(i in 1:length(split)){
  if(i %% 2 == 1){
    word1<-append(word1, split[i])
  } else {
    word2<-append(word2, split[i])
  }
}

word1 = paste0(word1, collapse = '')
word2 = paste0(word2, collapse = '')

> word1
[1] "Hello"
> word2
[1] "Lemon"

我的问题是它不是很优雅,如果我想将字符串拆分为 N 个不同的单词,它不会很好地升级。有一个更好的方法吗?

最佳答案

您可以使用 gsub将交替字符捕获到同一组中:

gsub("(.)(.)?", "\\1", string)
#[1] "Hello"
gsub("(.)(.)?", "\\2", string)
#[1] "Lemon"

关于r - 在交替索引上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50044233/

相关文章:

python - 在 pandas 中按向量分割数据框

window - ediff-split-window-function 水平==垂直?

r - 当你有一个向量时,如何在 R 中使用子字符串函数?

r - 'tidyr' s 单独函数中的多个单独参数

ios - Swift 将 AnyObject (Float) 向下转换为字符串

c++ - 如何创建一个由我之前输入的元素组成的数组?

r - 使用合并设置无与伦比的位置

r - 绘制 LDA 主题随时间的演变

java - 返回对象/原语和只是简单地调用它之间的区别

javascript - 从字符串中删除元素并连接它的更好方法是什么?