添加缺少的小数点(001=0.01 和 01=0.1)

Add in missing decimal (001=0.01 and 01=0.1)

我有一个字符串向量 a<-data.table(value=("001","01")),它实际上应该是小数(0.01 和 0.1),我想在第一个 0 处拆分字符串并在它之前添加一个小数。

我可以拆分字符串并得到一个列表

A<-strsplit(a$value, "(?=[0])", perl = TRUE)

所以我可以设想在函数内部执行 paste0(x[[1]][1],".",x[[1]][2]) 但我对如何参考指数:

dFun<-function(){
  as.numeric(paste0(x[[1]][1],".",x[[1]][2]))
}


purrr::map_df(.x=1:2,.f=dFun)

任何指点将不胜感激。

也许你可以试试这个

> a[, value := gsub("(?=1)", ".", value, perl = TRUE)][]
   value
1:  00.1
2:   0.1

> a[, value := sub("(^0)", "\1.", value)][]
   value
1:  0.01
2:   0.1

> a[, value := as.numeric(sub("(^0)", "\1.", value))][]
   value
1:  0.01
2:  0.10

因为 sub 只会替换第一次出现,你可以做 -

library(data.table)

a <- data.table(value=c("001","01"))
a[, value := as.numeric(sub('0', '0.', value))]
a

#   value
#1:  0.01
#2:  0.10

str_replace

library(stringr)
a[, value := as.numeric(str_replace(value, '0', '0.'))]
> a
   value
1:  0.01
2:  0.10

`