我在使用一个函数时遇到了麻烦,它的参数是同一个data. table的另一列。
pattern.1 <- regex("(?<=a)(.*)(?=c)")
DT <- data.table(x = c("abc", "adc", "abd"))
DT[, y := str_match(x, pattern.1)[1, 2]]
DT
例如,上面的代码给予yield:
x y
1: abc b
2: adc b
3: abd b
但预期的结果是:
x y
1: abc b
2: adc d
3: abd NA
有没有人知道如何解决这个问题,tks!
1条答案
按热度按时间eqqqjvef1#
您可以按以下方式解决您的问题:
备注
str_match
返回矩阵而不是向量;但在你的问题中,你会想得到一个向量1.在结果中,
y
列中的所有行都得到b
,因为您选择了str_match
返回的矩阵第二列的第一个元素,然后将其回收。您应该选择 all 行和第一列(str_match(x, pattern.1)[, 1]
)。1.函数
str_extract
更适合您的问题,因为它返回一个向量(见下文)