我有一個字符串的大名單的大名單中刪除逗號在名單上的每個項目這樣表示:檢測和從字符串只有部分字符串(R)
largeList<-
c("\t\t\t73,Tuesday,08/23/2014,09:03PM,Data Transfer,KB,\"60 KB\",MSDG,AT,GPRR,,0.00",
"\t\t\t74,Tuesday,08/23/2014,10:17PM,Data Transfer,KB,\"1,412 KB\",MSDG,AT,GPRR,,0.00",
"\t\t\t75,Wednesday,08/24/2014,12:08AM,Data Transfer,KB,\"2,589 KB\",MSDG,AT,GPRR,,0.00",
"\t\t\t76,Wednesday,08/24/2014,12:26PM,Data Transfer,KB,\"23,576 KB\",MSDG,AT,GPRR,,0.00",
"\t\t\t85,Thursday,08/25/2014,05:17PM,Data Transfer,KB,\"78,088 KB\",MSDG,AT,GPRR,,0.00")
我想使用
lapply(largeList, "strsplit",",")
但我對面來的問題是,雖然大部分的值都小於1000(如「\」 60 KB \「),也有大的值已逗號用逗號分割的數據在他們每隔一段時間(如「23,576 KB \」)。我試過
grep('(["KB"])', test, value=TRUE)
嘗試找到那種模式,但所有這一切發生的是整個字符串被返回。我知道最終我會用gsub()來替換那個部分,但是我對這個模式應該是什麼感到不知所措。最好部分解決方案,我能夠想出使用stringr包:
str_locate_all(test, '([""])')
與
[[1]]
start end
[1,] 52 52
[2,] 62 62
以上示例列表的第五值返回:
[5] "\t\t\t85,Thursday,08/25/2014,05:17PM,Data Transfer,KB,\"78,088 KB\",MSDG,AT,GPRR,,0.00"
據我所知,這確實是針對我想改變的部分的開始和結束。但我覺得有更好的方法來操縱字符串,我似乎無法弄清楚它的正則表達式。任何人都有一個更優雅的解決方案呢?
也許:'lapply(largeList,strsplit,分裂= 「?!?!(<[0-9]),([0-9])」,PERL = T)' – MichaelChirico
嘗試'gsub(「。*?\」([^ \「] +)。*」,「\\ 1」,largeList)'。 –
你究竟想要什麼?它只是傳輸/文件的大小(例如,KB之前的數字?還是它忽略了數字中逗號的字符串的分割? – MichaelChirico