我对R中gsub的行为有点困惑,我正在使用它来重命名data.table
中的变量。我希望任何以.y
结尾的变量都被重命名为以c_
开头。但是,我得到以下输出:
> gsub('[.]*\\.y', 'c_\\1', c('v1.y', 'v1'))
[1] "v1c_" "v1"
我本以为
> gsub('[.]*\\.y', 'c_\\1', c('v1.y', 'v1'))
[1] "c_v1" "v1"
我在SO上看到了很多关于gsub和反向引用的问题,但是,似乎没有一个能解释这个令人惊讶的(对我来说)行为。谢谢你的见解。
1条答案
按热度按时间avwztpqn1#
要使用反向引用,您需要有一个捕获组。试试这个
捕获组
(.*)
捕获".y"
之前的所有内容并将其追加到"c_"
。对于不以".y"
结尾的字符串,输出不变。