r 中的 gsub,仅针对某些值

gsub in r, only for some values

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

数据:

*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)

但它改变了我的所有其他数据。我怎样才能只更改我所有数据的前两个“,”。

提前致谢!

How can I change only the two first "," of all my data.

你可以使用 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,-,"
gsub("(?<=\d),", " ", data)

您可以简单地使用 lookbehind。查看演示。

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