R 拆分向量,按正则表达式分类
我正在寻找一种基于正则表达式模式分割字符向量的方法 输入示例:R 拆分向量,按正则表达式分类,r,R,我正在寻找一种基于正则表达式模式分割字符向量的方法 输入示例: input <- c("a_foo","b_foo", "c_bar", "d_bar") split_by <- c("foo", "bar") 编辑 根据评论和回答,需要澄清 split_by可以有任意数量的元素 正则表达式模式因情况而异;及 根据匹配情况,input中的元素可以分配给0(无匹配
input <- c("a_foo","b_foo", "c_bar", "d_bar")
split_by <- c("foo", "bar")
编辑 根据评论和回答,需要澄清
split_by
可以有任意数量的元素李>
input
中的元素可以分配给0(无匹配)、1或多个拆分input <- c("foo_bar", "nothing", "a_foo", "c_bar")
split_by <- c("foo", "bar")
我们得到了预期的结果:
$foo
[1] "a_foo" "b_foo"
$bar
[1] "c_bar" "d_bar"
$foo
[1] "foo_bar" "a_foo"
$bar
[1] "foo_bar" "c_bar"
第二个示例
通过定义问题第二个示例中的input
和split_By
,然后运行:
split.regex(input=input, split_by=split_by, pattern="%s$", add_names=TRUE)
split.regex(input=input, split_by=split_by, pattern="(%s)", add_names=TRUE)
我们得到了预期的结果:
$foo
[1] "a_foo" "b_foo"
$bar
[1] "c_bar" "d_bar"
$foo
[1] "foo_bar" "a_foo"
$bar
[1] "foo_bar" "c_bar"
由于输入“nothing”
在任何上都不匹配,因此它被正确地从拆分中排除,而“foo_bar”
被正确地添加到两个拆分中,因为它在两个拆分中都匹配
我们得到了预期的结果:
$foo
[1] "a_foo" "b_foo"
$bar
[1] "c_bar" "d_bar"
$foo
[1] "foo_bar" "a_foo"
$bar
[1] "foo_bar" "c_bar"
第二个示例
通过定义问题第二个示例中的input
和split_By
,然后运行:
split.regex(input=input, split_by=split_by, pattern="%s$", add_names=TRUE)
split.regex(input=input, split_by=split_by, pattern="(%s)", add_names=TRUE)
我们得到了预期的结果:
$foo
[1] "a_foo" "b_foo"
$bar
[1] "c_bar" "d_bar"
$foo
[1] "foo_bar" "a_foo"
$bar
[1] "foo_bar" "c_bar"
由于输入
“nothing”
在任何上都不匹配,因此它被正确地从拆分中排除,而“foo_bar”
被正确地添加到两个拆分中,因为它在两个拆分中都匹配。在实际情况下,您能否从输入数据中提取拆分值
这适用于共享的示例
split(input, sub('.*_', '', input))
#$bar
#[1] "c_bar" "d_bar"
#$foo
#[1] "a_foo" "b_foo"
在哪里
在实际情况下,您是否可以从输入数据中提取按
分割的值
这适用于共享的示例
split(input, sub('.*_', '', input))
#$bar
#[1] "c_bar" "d_bar"
#$foo
#[1] "a_foo" "b_foo"
在哪里
要获得命名输出,可以执行以下操作:
lapply(setNames(split_by, split_by), grep, x = input, value = TRUE)
要获得命名输出,可以执行以下操作:
lapply(setNames(split_by, split_by), grep, x = input, value = TRUE)
split\u by
是否可以包含2个以上的元素?@sindri\u baldur请查看更新的问题。split\u by
是否可以包含2个以上的元素?@sindri\u baldur请查看更新的问题。@A5C1D2H2I1M1N2O1R2T1很好@A5C1D2H2I1M1N2O1R2T1很好!