【发布时间】:2014-12-11 19:13:13
【问题描述】:
我有一个如下所示的数据集。我想用 1 替换两个 1 之间的所有点,如 desired.result 所示。我可以在基础R 中使用regex 执行此操作吗?
我试过了:
regexpr("^1\\.1$", my.data$my.string, perl = TRUE)
这是c#中的一个解决方案
Characters between two exact characters
感谢您的任何建议。
my.data <- read.table(text='
my.string state
................1...............1. A
......1..........................1 A
.............1.....2.............. B
......1.................1...2..... B
....1....2........................ B
1...2............................. C
..........1....................1.. C
.1............................1... C
.................1...........1.... C
........1....2.................... C
......1........................1.. C
....1....1...2.................... D
......1....................1...... D
.................1...2............ D
', header = TRUE, na.strings = 'NA', stringsAsFactors = FALSE)
desired.result <- read.table(text='
my.string state
................11111111111111111. A
......1111111111111111111111111111 A
.............1.....2.............. B
......1111111111111111111...2..... B
....1....2........................ B
1...2............................. C
..........1111111111111111111111.. C
.111111111111111111111111111111... C
.................1111111111111.... C
........1....2.................... C
......11111111111111111111111111.. C
....111111...2.................... D
......1111111111111111111111...... D
.................1...2............ D
', header = TRUE, na.strings = 'NA', stringsAsFactors = FALSE)
【问题讨论】:
-
这种模式在
regexpr:"1\\.*1"中会给出更有用的结果。^和$只允许在字符串的两端都有 1 的情况下进行匹配(并且缺少量词只会匹配只有 1 个句点的字符串。) -
四个(或更多)1 在同一行(即
..1...1...1...1..)时的预期结果是什么?..11111...11111..或..1111111111111..?