我需要在一把傘下組合一個物體。
這是一個示例物件。
object <- c("Equal = (G1, 20, Slope[0]); Equal = (G1, 20, Slope[1]);",
"Equal = (G1, 21, Slope[0]); Equal = (G1, 21, Slope[1]);",
"Equal = (G1, 22, Slope[0]); Equal = (G1, 22, Slope[1]);")
> object
[1] "Equal = (G1, 20, Slope[0]); Equal = (G1, 20, Slope[1]);"
"Equal = (G1, 21, Slope[0]); Equal = (G1, 21, Slope[1]);"
"Equal = (G1, 22, Slope[0]); Equal = (G1, 22, Slope[1]);"
我想做的是如下:
"Equal = (G1, 20, Slope[0]), (G1, 20, Slope[1]),
(G1, 21, Slope[0]), (G1, 21, Slope[1]),
(G1, 22, Slope[0]), (G1, 22, Slope[1]);"
基本上,我需要
(1) combine all under one "Equal" statement.
(2) replace`;` with `,` between statements,
(3) keep one `;` at the end of the object.
有任何想法嗎?謝謝!
uj5u.com熱心網友回復:
gsub("[; ] Equal =",',',paste(object, collapse = ''))
[1] "Equal = (G1, 20, Slope[0]), (G1, 20, Slope[1]), (G1, 21, Slope[0]), (G1, 21, Slope[1]), (G1, 22, Slope[0]), (G1, 22, Slope[1]);"
uj5u.com熱心網友回復:
我們可以使用一點正則運算式來做到這一點。
gsub("(?!^);\\s{0,1}Equal =", ",", paste(object, collapse = ""), perl = T)
[1] "Equal = (G1, 20, Slope[0]), (G1, 20, Slope[1]), (G1, 21, Slope[0]), (G1, 21, Slope[1]), (G1, 22, Slope[0]), (G1, 22, Slope[1]);"
uj5u.com熱心網友回復:
您可以使用str_extract_all()fromstringr提取括號中的所有文本。
library(stringr)
str_c("Equal = ", toString(unlist(str_extract_all(object, "\\(. ?\\)"))), ";")
# [1] "Equal = (G1, 20, Slope[0]), (G1, 20, Slope[1]), (G1, 21, Slope[0]), (G1, 21, Slope[1]), (G1, 22, Slope[0]), (G1, 22, Slope[1]);"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466807.html
上一篇:正則運算式匹配多個案例
下一篇:如何執行否定環視搜索
