仅删除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中的空括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章