我有一些特定格式的句子,我需要定期拆分它们.
句子看起来像这样
"abxyzpqrst34245"
"mndeflmnop6346781"
Run Code Online (Sandbox Code Playgroud)
我想在以下字符之后拆分这些句子:c(2,5,10),以便输出为:
[1] c("ab", "xyz", "pqrst", "34245")
[2] c("mn", "def", "lmnop", "6346781")
Run Code Online (Sandbox Code Playgroud)
注意:第3次拆分后的数字字符具有可变长度,其中前面的数字字符具有固定长度.
我尝试使用cut,但它只适用于整数向量.
我看了看split,但我不确定它是否有效.
所以,我最后substr分开将每个句子分开,如下所示:
substr("abxyzpqrst34245", 1,2)
[1] "ab"
substr("abxyzpqrst34245", 3,5)
[1] "xyz"
substr("abxyzpqrst34245", 6,10)
[1] "pqrst"
substr("abxyzpqrst34245", 11,10000)
[1] "34245"
Run Code Online (Sandbox Code Playgroud)
我正在使用这个漫长的过程来分割这些字符串.有没有更简单的方法来实现这种分裂?
你正在寻找(经常被忽视)substring:
x <- "abxyzpqrst34245"
substring(x,c(1,3,6,11),c(2,5,10,nchar(x)))
[1] "ab" "xyz" "pqrst" "34245"
Run Code Online (Sandbox Code Playgroud)
这很方便,因为它是完全矢量化的.如果你想依次对多个字符串执行此操作,可以执行以下操作:
x <- c("abxyzpqrst34245","mndeflmnop6346781")
> lapply(x,function(y) substring(y,first = c(1,3,6,11),last = c(2,5,10,nchar(y))))
[[1]]
[1] "ab" "xyz" "pqrst" "34245"
[[2]]
[1] "mn" "def" "lmnop" "6346781"
Run Code Online (Sandbox Code Playgroud)