R:当有多个符号时如何正确拆分字符串

R: how to split string correctly when there are multiple signs

如何使用R来分割一个字符串,从而达到下面想要的结果?

"A++" => "A" "" ""
"A+B+" => "A" "B" ""
"A+B+C" => "A" "B" "C"
"A++C" => "A" "" "C"
"++C" => "" "" "C"

我试了strsplit()strsplit("A++","\+")[[1]]的结果是"A" "",少了一个""

基础库中的 strsplit 功能有些受限。它会丢弃尾随的空字符串。试试 stringrstringi 库。例如:

library(stringr)
str_split("A++", "\+")

这有你需要的 return:

[[1]]
[1] "A" ""  "" 

str_split 对输入字符串和匹配模式进行矢量化。

如果您总是想保留大写字母,您可以尝试以下方法。

x<-unlist((strsplit("A++",""[[1]])),use.names = F)

for(j in 1:length(x)){
  if(x[j] %in% LETTERS){x[j]<-x[j]}
  else{x[j]<-""}
}

您必须先使用 strsplit,然后使用 unlist 从列表转换为向量。然后,只需保留任何大写字母并将所有其他字符替换为“”(R 有一个存储向量 "LETTERS" 或 "letters" 如果你确实需要小写)。