如何从R中的字符串中删除方括号和文本

时间:2019-12-09 05:58:51

标签: r regex string gsub

我在用R语言处理数据帧(test_dataframe)列(test_column)值时遇到问题,如下所示:
列中的原始字符串:

test_column
6.77[9]
5.92[10]
2.98[103]

我需要删除方括号和方括号内的任何字符,因此目标值如下:

test_column
6.77
5.92
2.98

我尝试使用R语言中的gsub函数,但是解决起来不是很幸运,有人可以帮忙弄清楚吗?

3 个答案:

答案 0 :(得分:4)

我会使用:

input <- c("6.77[9]", "5.92[10]", "2.98[103]")
gsub("\\[.*?\\]", "", input)

[1] "6.77" "5.92" "2.98"

正则表达式模式\[.*?\]应该与方括号中所有引用的术语匹配,并且使用gsub会告诉R替换所有此类术语。

答案 1 :(得分:3)

您可以使用sub并删除方括号后的所有内容。

df$test_column <- sub("\\[.*", "", df$test_column)
df
#  test_column
#1        6.77
#2        5.92
#3        2.98

您可能希望将sub的输出包装在as.numeric中。


如果如示例中所示始终前面有一个数字值,则也可以使用parse_number

readr::parse_number(df$test_column)
#[1] 6.77 5.92 2.98

数据

df <- structure(list(test_column = c("6.77[9]", "5.92[10]", "2.98[103]"
)), row.names = c(NA, -3L), class = "data.frame")

答案 2 :(得分:0)

我们可以使用str_remove中的stringr

library(stringr)
library(dplyr)
df %>%
   mutate(test_column = str_remove(test_column, "\\[.*"))
#  test_column
#1        6.77
#2        5.92
#3        2.98