如何在r中每隔一个逗号后拆分列中的文本

时间:2015-12-01 10:28:46

标签: regex r

我在数据框中有一个列,它由包含

等值的行组成
SNORD55,RNA5SP47,RNU5F-1,RPS8,RNU5E-6P,SNORD38A,SNORD38B,RNU5D-1,SNORD46,KIF2C,NASP,ZSWIM5,LINC01144,OSTCP5,GPBP1L1,RPS15AP11,BEST4,HMGB1P48,HPDL,CCDC17,AKR1A1,MRPS17P1,TMEM53,HECTD3,UROD,TOE1,TESK2,BTBD19,MUTYH,PTCH2,TCTEX1D4,PLK3,CCDC163P,PRDX1,CCNB1IP1P1,EIF2B3,MMACHC,C1orf228

我希望每隔一个逗号就有一个新行。

我尝试了以下内容:

df.l$hgnc_symbol<-sub("([^\\,]*\\,[^\\,]*\\,)","\\1\n",df.l$hgnc_symbol)

但这只会在前两个逗号之后分割,而不是之后。

3 个答案:

答案 0 :(得分:0)

解决方法:1。在每个逗号处拆分2.将两个元素组合在一起。

x <- "SNORD55,RNA5SP47,RNU5F-1,RPS8,RNU5E-6P,SNORD38A,SNORD38B,RNU5D-1,SNORD46,KIF2C,NASP,ZSWIM5,LINC01144,OSTCP5,GPBP1L1,RPS15AP11,BEST4,HMGB1P48,HPDL,CCDC17,AKR1A1,MRPS17P1,TMEM53,HECTD3,UROD,TOE1,TESK2,BTBD19,MUTYH,PTCH2,TCTEX1D4,PLK3,CCDC163P,PRDX1,CCNB1IP1P1,EIF2B3,MMACHC,C1orf228"
y <- matrix(strsplit(x, ",")[[1]], , 2, byrow=TRUE)
paste(y[,1], y[,2], sep=",")

答案 1 :(得分:0)

如果你想用正则表达式做,那么这个呢?

df.l$hgnc_symbol<-gsub("([\w-]+,[\w-]+),","\\1,\n",df.l$hgnc_symbol)

Example here。 (164步)

请注意,这比您的初始正则表达式要慢。正如David Arenburg指出的那样,您只需使用gsub代替sub

最后注意:stribizhev's comment可能是最好的方式。

答案 2 :(得分:0)

正如@DavidArenburg所说。我只需要添加gsub而不是sub