用条件模式替换文本

时间:2016-06-27 18:19:33

标签: r

我正在导入一个文件,其列名采用以下格式:

x <- "text.text.text.text.name"

在大多数情况下,以下行有助于在最后一段时间之前删除所有内容,只留下我想要的变量名称(name):

gsub(".*\\.","", x)

但是,某些变量具有以下格式:

y <- "text.text.text.text.name.R1"

我希望在最后一段时间后跟一个大写字母“R”时保持name.R1。如何修改gsub参数以允许此更改?

3 个答案:

答案 0 :(得分:1)

您可以使用负面预测来约束最后一段时间:

gsub(".*\\.(?!R)", "", x, perl = T)
# [1] "name"

gsub(".*\\.(?!R)", "", y, perl = T)
# [1] "name.R1"

答案 1 :(得分:0)

gsub('.*\\.(\\w+.\\w+$)','\\1',y)
#[1] "name.R1"

答案 2 :(得分:0)

@ kasterma的解决方案最适合我:

gsub("(.*\\.)([^R])","\\2", x)