r中的gsub,仅用于某些值

时间:2015-08-18 09:29:30

标签: regex r gsub

我是R的新手,所以如果这太基础我很抱歉。 我有一个" .txt"文件包含586行,如下所示:

数据:

*M1,D1.13,o,o,o,o,o,-,o,o,o,-,
*M2,D1.13,o,ab,o,o,o,-,o,o,o,-,

但我需要这些:

*M1 D1.13 o,o,o,o,o,-,o,o,o,-,
*M2 D1.13 o,ab,o,o,o,-,o,o,o,-,

所以,我使用了gsub功能:

gsub(",", " ", data)

但它会更改我的所有其余数据。我怎样才能改变第一个","我的所有数据。

提前致谢!

2 个答案:

答案 0 :(得分:3)

gsub("(?<=\\d),", " ", data)

您只需使用lookbehind。请参阅演示。

https://regex101.com/r/uF4oY4/76

答案 1 :(得分:2)

  

如何只更改所有数据中的两个“,”。

您可以使用sub,

sub("^([^,]*),([^,]*),", "\\1 \\2 ", x)

示例:

> x <- c("*M1,D1.13,o,o,o,o,o,-,o,o,o,-,", "*M2,D1.13,o,ab,o,o,o,-,o,o,o,-,")
> sub("^([^,]*),([^,]*),", "\\1 \\2 ", x)
[1] "*M1 D1.13 o,o,o,o,o,-,o,o,o,-,"  "*M2 D1.13 o,ab,o,o,o,-,o,o,o,-,"