我有这样的向量:
x <- c("20(0.23)", "15(0.2)", "16(0.09)")
我不想弄乱括号外面的数字,但想删除里面数字的前导零,并使所有内容都有 2 位数字。输出将如下所示:
"20(.23)", "15(.20)", "16(.09)"
有用信息:
我可以使用以下函数删除前导零并保留 2 位数字:LINK
numformat <- function(val) { sub("^(-?)0.", "\\1.", sprintf("%.2f", val)) }
numformat(c(0.2, 0.26))
#[1] ".20" ".26"
我知道
gsub
可以用,但不知道怎么用。我会提供一个 strsplit
回答,但这充其量是骇人听闻的。
最佳答案
gsubfn 包允许您使用应用于匹配的函数替换正则表达式匹配的任何内容。所以我们可以用你的 numformat
功能
library(gsubfn)
# Note that I added as.numeric in because what will be passed in
# is a character string
numformat <- function(val){sub("^(-?)0.", "\\1.", sprintf("%.2f", as.numeric(val)))}
gsubfn("0\\.\\d+", numformat, x)
#[1] "20(.23)" "15(.20)" "16(.09)"
关于r - 括号内的 gsub 和填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12876820/