如何从由GSUB被替换排除的东西()

很抱歉,如果这是一个愚蠢的问题,我是真正的新R.我想知道的是,有没有什么办法来指定GSUB或类似函数中排除? 我的数据将是这个样子:(15:0.0234,12:0.0151),我想用这种匹配其他项目来代替领先15(A:.B,C:.D)模式。 但是,仅仅呼吁GSUB取代了15领先的新格局,而15后的小数点。 它不会工作简单地告诉它仅替换第一次出现,因为有不少这些模式的嵌套。 我在想什么是排除数字下面一个小数点,后跟一个空格从GSUB - 这甚至可能?

--------------解决方案-------------

如果设置perl=TRUE在GSUB然后就可以用正面和负面的外观aheads还是看这可能会解决您的问题屁股,例如模式15(?=:)将匹配后跟一个冒号15(但不会匹配/替换冒号),将不会匹配未后跟一个冒号的15秒。 该模式'(?

?regex中的“Perl的部分以了解详情。

相反,使用正则表达式的工作,我会考虑解析字符串转换(a, b, c, d, ...)的载体。 例如,你可以这样做:

strsplit("15: .0234, 12: .0151", ": |, ")
# [[1]]
# [1] "15" ".0234" "12" ".0151"

那么它应该是很容易做的使用功能,如替换==match%in%[等等。

当你完成,你可以用把东西重新走到一起paste

我可以告诉你如何更换只有“领先15”S,但你没有提供产生测试用例,你做什么或不wnat取代这些嵌套模式的代码,所以这是一个有点猜测。

vec <- c('15: .0234' , '12: .0151')
gsub("^15", "aa", vec)
#[1] "aa: .0234" "12: .0151"

在一个正则表达式的“^”符号表示的字符串的开头。

这可能是更容易做一个包容而非排除。

首先,建立了一些测试数据:

test <- c("15: .0234 , 12: .0151")

一个例子在字符串的开头替换15(了^做到这一点)。

gsub("^15","x",test)
[1] "x: .0234 , 12: .0151"

更一般的例子,在字符串的开始替换任何数目。

gsub("^([0-9]+)","x",test)
[1] "x: .0234 , 12: .0151"

一个例子,以消除任何数字,后跟一个冒号(:)和一个带X和冒号替换

gsub("([0-9]+):","x:",test)
[1] "x: .0234 , x: .0151"

将这项工作的吗?

(foo <- "15: .0234 , 12: .0151")
# "15: .0234 , 12: .0151"
(bar <- "a: .b , c: .d")
# "a: .b , c: .d"
gsub("^15",bar, foo)
# "a: .b , c: .d: .0234 , 12: .0151"

如果没有,请提供一些例子和数据也显示出你的最终目标是什么一个例子对象。 您的数据怎么可能看起来像一个字符串,它的句子“这是行不通简单地告诉它仅替换第一次出现,因为有不少这些模式嵌套的”这是一个小我不清楚。 你想要一个字符串中找到“15”,但如果它在年底或一个号码的一部分,与小数点开始?

你读过的帮助文件?gsub

gsub("^15","a: .b , c: .d","15: .0234 , 12: .0151")

这会解决问题了吗?

分类:ř 时间:2015-03-15 人气:3
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.292 (s). 10 q(s)