所以我有一个代表折叠RNA二级结构的字符串,例如:
"....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
我的目标是去掉字符串两端的这些点,这样我就可以得到:
"(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"
我一直在尝试使用gsub函数,比如:
gsub("\\.+\\(", "", string)
在开始时,以及:
gsub("\\)\\.+", "", string)
为了结束
但此命令的输出为:
"(((((((((((((((((((((((((.......))))))))..))))..)))....."
和:
"....(((((((((...((...(((((((((((..((.(.......)))))))))))))))"
基本上,我不想去掉中间的点,只想去掉开头和结尾的点。
有没有人知道用R解决这个问题的好方法?
谢谢
发布于 2019-05-21 01:01:20
我们可以转义(\\.
)或将.
放在方括号([.]
)中,因为.
是一个元字符,可以匹配任何字符。
gsub("^[.]*|[.]*$", "", string)
#[1] "(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"
在上面的代码中,我们指定锚点(^
)以匹配字符串的开头,后跟零个或多个.
(*
)或|
,字符串末尾的零个或多个点($
)并替换为空白(""
)
数据
string <- "....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
发布于 2019-05-21 03:13:07
在R 3.6.0中,trimws
有一个whitespace=
参数,所以在结尾处的注释中使用x
:
trimws(x, whitespace = "\\.")
## [1] "(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"
备注
x <- "....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
https://stackoverflow.com/questions/56225307
复制相似问题