在DF中,我有不同长度的列条目,如下所示:
tmp_ezg.\"dr_HE_10691\"
,tmp_ezg.\"dr_MV_0110200016\"
,tmp_ezg.\"dr_MV_0111290017\"
等
我怎样才能最好地在引号之间对哪些内容进行子串?
我的想法:
substring(DF$name, 10)
由于引号的内容长度不同,我无法为substring()提供停止的值。
是否有可能仅在某些符号(即引号)之间进行子串?
答案 0 :(得分:2)
例如
x <- c('tmp_ezg.\"dr_HE_10691\"' ,
'tmp_ezg.\"dr_MV_0110200016\"' ,
'tmp_ezg.\"dr_MV_0111290017\"')
res <- sub('.*?"([^"]+)"', "\\1", x)
print(res, quote=F)
# [1] dr_HE_10691
# [2] dr_MV_0110200016
# [3] dr_MV_0111290017
......如果我没有弄错的话。
答案 1 :(得分:2)
要分隔引号之间的内容(假设每个条目中只有两个),您只需将字符串拆分为\\\"
(转义后的反斜杠和引号):
y <- strsplit(x, split = "\\\"")
如果所有条目都以引号结尾,则会显示包含两个值的条目列表,每个条目中的第二个值都是您的字符串。
[[1]]
[1] "tmp_ezg." "dr_HE_10691"
[[2]]
[1] "tmp_ezg." "dr_MV_0110200016"
[[3]]
[1] "tmp_ezg." "dr_MV_0111290017"