仅删除R中的空括号[重复]

Posted

技术标签:

【中文标题】仅删除R中的空括号[重复]【英文标题】:Removing only empty parenthesis in R [duplicate] 【发布时间】:2022-01-21 03:11:57 【问题描述】:

我正在处理一些标题,我需要删除标题中的括号,但只有 where 里面什么都没有,但如果它有度量单位,则保留其他的。例如

"Sample_No ()"  - Sample_No
"SOC (%)" - "SOC (%)"

示例

【问题讨论】:

我已经编辑了这个,但是对于只涉及文本输入和输出的操作,提供简单的文本可能会更好。这将使问题更容易理解,尤其是对于使用屏幕阅读器等的人。 【参考方案1】:

如果是空括号匹配左括号后跟右括号,没有任何其他字符,并替换为gsub 中的空白("")(如果有多个匹配项)或示例连sub都够了)

gsub("\\s*\\(\\)", "", v1)

-输出

[1] "Sample_No" "SOC (%)"  

或者使用str_remove from stringr

library(stringr)
trimws(str_remove_all(v1, fixed("()")))
[1] "Sample_No" "SOC (%)"  

数据

v1 <- c("Sample_No ()", "SOC (%)")

【讨论】:

【参考方案2】:

gsub 与正则表达式一起使用。 \\s 表示空格 \\(\\) 必须被转义的括号。

x <- c("Sample_No ()", "Sample_No", "SOC (%)", "SOC (%)")

gsub('\\s\\(\\)', '', x)
# [1] "Sample_No" "Sample_No" "SOC (%)"   "SOC (%)"  

【讨论】:

【参考方案3】:

使用gsub 你可以这样做:

header <- c("Sample_No ()", "SOC (%)")

gsub("\\s*\\(\\)", "", header)
#> [1] "Sample_No" "SOC (%)"

【讨论】:

感谢@stefan 和所有其他人! @TomasV 欢迎您。但在我看来,akrun 应该得到公认的答案。他不仅是第一个回答的,而且他的回答比我的更完整。【参考方案4】:

为了完整起见,您可能想探索stringi 包。下面的代码还修剪了操作后可能留下的潜在空白。

vecA <- c("Sample_No ()", "SOC (%)")
stringi::stri_trim_both(
    stringi::stri_replace_all(str = vecA, replacement = "",  fixed = "()")
)
# [1] "Sample_No" "SOC (%)"

这个特殊的操作是微不足道的,但stringi 对于更复杂的操作会派上用场。

【讨论】:

以上是关于仅删除R中的空括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xpath 表达式仅删除 XML 中的空节点?

如何在R中的空数据框中创建新列[重复]

如何删除数组中的空元素[重复]

PHP:删除多维数组中的空数组字符串[重复]

如何使用无点递归实现使用 Ramda 删除对象中的空值?

RODBC:为啥 sqlQuery() 中的空值和仅空格值的值为“NA”?