我有一个字符串的大名单的大名单中删除逗号在名单上的每个项目这样表示:检测和从字符串只有部分字符串(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