R:努力使用正则表达式来改变向量中的对象



为了简化这一点,我从一个较大的数据库中获取了顶部结果,并将它们放在下面的向量中:

trialsid <- c(t16740429-1, t16740429-2, t16740429-3, t16740429-4, t16740429-5)

现在,如果我们关注t16740429-1,目标是将其转换为1674-04-29,但我不确定如何实现这一点。

我想我需要做这样的事情:

trialid_readable <- trialid %>% paste0(str_replace(?), "-", str_replace(?), "-", str_replace(?))

创建要实现的捕获组。

我还考虑了正则表达式=\\d{1,4}、\\d{5,6}和\\d{7,8}。

然而,我不确定如何将这一切结合起来。

使用基R:

trialsid <- c('t16740429-1', 't16740429-2', 't16740429-3', 't16740429-4', 't16740429-5')
trialsid
[1] "t16740429-1" "t16740429-2" "t16740429-3" "t16740429-4" "t16740429-5"
gsub('t(\d{4})(\d{2})(\d{2})-.','\1-\2-\3',trialsid)
[1] "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29"

{n,m}表示前一模式的nm出现之间的匹配:

str_replace(trialsid, "t(\d{4})(\d{2})(\d{2}).+", "\1-\2-\3")
[1] "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29"

最新更新