r - 使用正则表达式在 R 中提取字符串以获取可变数量的实例
问题描述
我有一个字符串列(data.table),我需要根据模式('-' 之间的文本)和该模式的已定义(但可变)数量的实例来解析它,我不知道该怎么做它使用正则表达式:
> test <- c("AAA-bb-ccc", "abcd-efgh","blah", "blah-blah-blah-blah")
比如说,预定义的实例数是 i。
> i = 1
> output
"AAA" "abcd" "blah" "blah
> i = 2
> output
"bb" "efgh" "" "blah"
> i= 3
> output
"ccc" "" "" "blah"
我将如何使用 i 来实现此目的的通用正则表达式?
解决方案
我们可以创建一个在“-”上拆分并返回第 i 个值的函数。
get_i_th_element <- function(test, i) {
sapply(strsplit(test, "-"), function(x) if(length(x) >= i) x[[i]] else "")
}
get_i_th_element(test, 1)
#[1] "AAA" "abcd" "blah" "blah"
get_i_th_element(test, 3)
#[1] "ccc" "" "" "blah"
推荐阅读
- node.js - 如何使用节点 js 在外部函数中返回和打印
- android-studio - Flutter 不保存项目的最后一次构建
- django - 由 Django 从 json 发布内容
- django - Django:当传递带有 - 的字符串时,后面的任何东西 - 都会被丢弃
- spring - 为什么要使用 SpringKafka 模板代替现有的 Kafka Producer Consumer api?
- ssh - 连接被拒绝:ssh 到无头 Raspberry Pi 3 b+
- java - Mockito 方法存根返回先前测试的存根值
- python - 为什么我的 pygame 代码在 32 位上运行得更快?
- linux - 为什么 gcc 函数属性 noplt 使我的程序变慢?
- c# - 为什么 ViewData 不显示任何内容?