已解析 html,已更改为数字并可能通过管道 (R),但一直收到错误的数字

parsed html, changed to numbers and possibly through piping (R) but keep getting wrong number

我正在尝试通过键入以下代码更改字符编号(字符数据类型)--> 数字编号;

  > my.numbers<-c("10B","1M","1000","130T")
    > step.one<-my.numbers[grep("B|M|T",my.numbers,value=F)]
    > step.two<-gsub("B",1000000000,step.one)
    > step.two<-gsub("M",1000000,step.two) 
    > step.two<-gsub("T",1000000000000,step.two)
    > my.numbers[grep("B|M|T",my.numbers,value=F)]<-step.two
    > my.numbers
    [1] "101e+09"  "11e+06"   "1000"     "1301e+12"

它有效,所以我在这里没有问题,但我试图通过管道使其“更好”;

   > my.numbers<-c("10B","1M","1000","130T")
    > my.numbers[grep("B|M|T",my.numbers,value=F)]<-gsub("B",1000000000,my.numbers) %>% gsub("M",1000000,) %>% gsub("T",1000000000000,)
    Warning message:
    In gsub(., "M", 1e+06, ) :
      argument 'pattern' has length > 1 and only the first element will be used
    > my.numbers
    [1] "1e+12" "1e+12" "1000"  "1e+12"

这个数字似乎发生了翻天覆地的变化。有什么建议吗?

使用.引用前一个管道的值并将其传递给gsub :

library(magrittr)

my.numbers<-c("10B","1M","1000","130T")

my.numbers <- gsub("B",1000000000,my.numbers) %>% 
  gsub("M",1000000, .) %>% 
  gsub("T",1000000000000, .)

my.numbers

#[1] "101e+09"  "11e+06"   "1000"     "1301e+12"