如何删除R中数字值中的逗号?

时间:2017-07-06 12:09:00

标签: r

column19 <- 19
mdf[,column19] <- lapply(mdf[,column19],function(x){as.numeric(gsub(",", "", x))})

此代码段有效,但也会导致重复值

1 个答案:

答案 0 :(得分:2)

如果只有一列,我们就不需要lapply

mdf[, column19] <- as.numeric(gsub(",", "", mdf[, column19], fixed = TRUE))

OP的代码没有按预期运行的原因是因为lapply在将其转换为vectormdf[, column19])后的单个列上并循环遍历列的每个单个元素并返回list。现在,我们将list的输出分配回该单列

column19 <- 19
mdf[,column19] <- lapply(mdf[,column19],function(x) as.numeric(gsub(",", "", x)))
  

警告讯息:在[<-.data.frame*tmp* ,,第19栏,值=   list(27,49,510,:提供了5个变量来替换1个变量

相反,如果我们想要使用相同的过程,请按data.framemdf[column19]保留mdf[, column19, drop = FALSE]结构,然后使用lapply循环。这样,它就是list,只有一个vector

mdf[column19] <- lapply(mdf[column19],function(x) as.numeric(gsub(",", "", x)))

这与在单个列或行上使用[时删除维度更相关,因为默认情况下它是drop = TRUE

数据

set.seed(24)
mdf <- as.data.frame(matrix(sample(paste(1:5, 6:10, sep=","), 
   5*20, replace = TRUE), 5, 20), stringsAsFactors=FALSE)