gpt4 book ai didi

R strsplit 具有多个无序分割参数?

转载 作者:行者123 更新时间:2023-12-03 06:18:24 25 4
gpt4 key购买 nike

给定一个字符串

test_1<-"abc def,ghi klm"
test_2<-"abc, def ghi klm"

我希望获得

"abc"
"def"
"ghi"

但是,使用 strsplit 时,必须知道字符串中拆分值的顺序,因为 strsplit 使用第一个值进行第一次拆分,第二个值进行第二次...然后回收。

但这并不:

strsplit(test_1, c(",", " "))
strsplit(test_2, c(" ", ","))

strsplit(test_2, split=c("[:punct:]","[:space:]"))[[1]]

我希望在一步中找到任何分割值时分割字符串。

最佳答案

实际上strsplit也使用grep模式。 (逗号是正则表达式元字符,而空格不是;因此需要在模式参数中对逗号进行双重转义。因此,使用 "\\s" 比使用 "\\s" 更能提高可读性必要性):

> strsplit(test_1, "\\, |\\,| ")  # three possibilities OR'ed
[[1]]
[1] "abc" "def" "ghi" "klm"

> strsplit(test_2, "\\, |\\,| ")
[[1]]
[1] "abc" "def" "ghi" "klm"

如果不使用 \\,\\, (请注意 SO 未显示的额外空间),您将获得一些字符(0)值。如果我这样写可能会更清楚:

> strsplit(test_2, "\\,\\s|\\,|\\s")
[[1]]
[1] "abc" "def" "ghi" "klm"

@Fojtasek 说得非常正确:使用字符类通常会简化任务,因为它会创建隐式逻辑 OR:

> strsplit(test_2, "[, ]+")
[[1]]
[1] "abc" "def" "ghi" "klm"

> strsplit(test_1, "[, ]+")
[[1]]
[1] "abc" "def" "ghi" "klm"

关于R strsplit 具有多个无序分割参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10738729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com