R中的gsub函数不替换

时间:2015-09-18 11:45:23

标签: r

请有人告诉我这里的问题是什么?我有数据,其中数字之间有空格。例如,而不是1234.00,我有1 234.00。我必须使用R中的" " with ""函数替换gsub

我写了这个函数:

data(mydata)

fixup.num <- function(x) 
    as.numeric(gsub(pattern = " ", replacement = "", x, fixed = TRUE))

fixup.num(mydata$safety)

但是在完成之后,我可以看到空格没有被替换,mydata没有改变。我在哪里做错了?

1 个答案:

答案 0 :(得分:0)

destring包中有一个漂亮的功能taRifx,可以完全按照您的要求进行操作。当我有一个错误格式化为字符串的数字向量时,我会使用它。

library(taRifx)
x <- c("1 234", "3 456", "9 876")
destring(x)
# [1] 1234 3456 9876

此功能还可以清除其他类型的有问题的数字。

x <- c("1,234", "$84.27", "3 Help I'm stuck in a numeric factory 27")
destring(x)

如果您查看功能定义,则会看到它是通过调用gsub为其提供的。

function (x, keep = "0-9.-") 
{
    return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""), 
        "", x)))
}

如果您不想加载库,则可以直接使用gsub调用的略微修改版本。只需将x替换为您想要清理的数据。

as.numeric(gsub(paste("[^", "0-9.-", "]+", sep = ""), "", x))