在 R 上使用 gsub 时强制转换?不知道为什么会这样

问题描述

只是想知道是否有人可以澄清以下内容。所以

    > sample<-"10B"
    > "10" * 10000  

#Character * 数字,不起作用

    Error in "10" * 10000 : non-numeric argument to binary operator
    > "10" * "10000000"

#character * 字符,不起作用

    Error in "10" * "10000000" : non-numeric argument to binary operator
    > gsub("B",1000000,sample)

#由于某种原因,当用数字替换字符时,字符中会出现数字*数字。

[1] "101e+06"

有人能帮我理解为什么会这样吗?

解决方法

gsub 将替换值强制转换为字符。来自?gsub

replacement - 替换 sub 和 gsub 中匹配的模式。如果可能的话,强制转换成角色。

result <- gsub("B",1000000,sample)
result
#[1] "101000000"

所以数字1000000在替换时改为字符,而class(result)是字符。