我在数据框中有一个列,它由包含
等值的行组成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)
但这只会在前两个逗号之后分割,而不是之后。
答案 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