r - 删除两个字符串之间的字符串
问题描述
假设我有以下向量:
df<- c("@Accessoires A-B [COLL]", "@Accessoires C-D [COLL]",
"@Components A-D [COLL]","@Components [COLL]",
"@Accessoires [COLL]", "@Components H-Z [COLL]")
我想删除 AB 或 CD 等存在的字符串的中间部分。这是一个例子,在我的数据框中,字母组合有很多可能性。
所以所需的输出将是:
"@Accessoires [COLL]"
"@Accessoires [COLL]"
"@Components [COLL]"
"@Components [COLL]"
"@Accessoires [COLL]"
"@Components [COLL]"
我的问题是如何在 R 中实现这一点而无需定义所有字母组合?
解决方案
您可以使用sub()
和一些正则表达式:
sub("\\s[A-Z]-[A-Z]\\s", " ", df)
[1] "@Accessoires [COLL]" "@Accessoires [COLL]" "@Components [COLL]" "@Components [COLL]"
[5] "@Accessoires [COLL]" "@Components [COLL]"
正则表达式归结为:
\\s
: 一个空格[A-Z]
: 任何(英文)大写字母。
顺便说一句,你df
是一个向量,但不是data.frame
df <- c(
"@Accessoires A-B [COLL]", "@Accessoires C-D [COLL]","@Components A-D [COLL]",
"@Components [COLL]", "@Accessoires [COLL]","@Components H-Z [COLL]"
)
is.data.frame(df)
[1] FALSE
推荐阅读
- c - C语言中排序函数的使用方法
- javascript - 在主要操作 DOM 元素时,在 JS 中是否有任何 Pattern 或 Class 样式可以遵循?
- c# - 使用 ColorMatrix 将图像转换为单色
- javascript - Greasemonkey (Violentmonkey) 脚本更改网站值
- mysql - mysql jsonarrayagg 用于逗号分隔的 id
- bash - 根据蛋白质片段将单个 fasta 文件分成多个 fasta 文件
- python - 硒不加载
- 里面
- 里面
- 里面
- laravel - Laravel Scout/Meilisearch - 按不可搜索的列过滤
- excel - 如果满足条件,则 VBA 代码复制粘贴多个单元格
- c# - 返回响应并开始处理繁重的工作