Как использовать функцию strsplit с периодом
Я хотел бы разбить следующую строку на ее периоды. Я пробовал strsplit()
с "."
в аргументе split
, но не получил результат, который я хочу.
s <- "I.want.to.split"
strsplit(s, ".")
[[1]]
[1] "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Выход, который я хочу, состоит в разделении s
на 4 элемента в списке, как показано ниже.
[[1]]
[1] "I" "want" "to" "split"
Что мне делать?
Ответы
Ответ 1
При использовании регулярного выражения в аргументе split
strsplit()
вам нужно избежать .
с помощью \\.
или использовать charclass [.]
. В противном случае вы используете .
в качестве своего специального символа, означающего "любой отдельный символ".
s <- "I.want.to.split"
strsplit(s, "[.]")
# [[1]]
# [1] "I" "want" "to" "split"
Но более эффективным методом является использование аргумента fixed
в strsplit()
. Использование этого аргумента будет обходить механизм регулярных выражений и искать точное соответствие "."
.
strsplit(s, ".", fixed = TRUE)
# [[1]]
# [1] "I" "want" "to" "split"
И, конечно, вы можете увидеть help(strsplit)
для большего.
Ответ 2
Вам нужно либо поместить точку .
внутри класса символов , либо предварять ее двумя обратными косыми чертами, чтобы избежать ее, поскольку точка символ специальный смысл в regex означает "соответствовать любому одиночному символу (кроме новой строки)"
s <- 'I.want.to.split'
strsplit(s, '\\.')
# [[1]]
# [1] "I" "want" "to" "split"
Ответ 3
Период является особым символом, нужно бежать, как упоминалось
> strsplit(s, "\\.")
[[1]]
[1] "I" "want" "to" "split"