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
功能有些受限。它会丢弃尾随的空字符串。试试 stringr
或 stringi
库。例如:
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" 如果你确实需要小写)。
如何使用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
功能有些受限。它会丢弃尾随的空字符串。试试 stringr
或 stringi
库。例如:
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" 如果你确实需要小写)。