之前我使用以下方法移动化学品末端提到的官能团 名称(用一个或多个“,”分隔)到前面:
name <- "2,6-Octadien-1-ol, 3,7-dimethyl-, (E)-"
paste(rev(strsplit(name, ", ")[[1]]), collapse = "")
[1] "(E)-3,7-dimethyl-2,6-Octadien-1-ol"
我现在有一些情况,其中“,”用作分隔符而不是“,”。有人想知道我应该怎么修这些名字吗?
E.g。
name <- "2,6-Octadien-1-ol,3,7-dimethyl-,(E)-"
应该产生
"(E)-3,7-dimethyl-2,6-Octadien-1-ol"
如果这些逗号不是在一个数字(或“(或”)“括号后面),我想在这种情况下打破逗号。但是我应该在strsplit
中使用什么正则表达式来实现这一点?或者,如何指定一个正则表达式,该正则表达式在“,”或不跟随数字(或“(或”)“括号)的逗号处断开?
答案 0 :(得分:1)
name <- "2,6-Octadien-1-ol, 3,7-dimethyl-, (E)-"
name = gsub("(\\D),","\\1#",gsub(" ","",name))
paste(rev(strsplit(name, "#")[[1]]), collapse = "")
这假设任何非数字后跟逗号是真正的分隔符,其他逗号是名称的一部分。