应用函数将整数数据帧转换为十进制时返回因子



我正在尝试将一列整数转换为十进制:

CI

14   15  16
17   18  19
20   21  22
CI_decimal<-as.data.frame(apply(CI, 2, function(x) format(x, nsmall=3)))

当应用此项时,我获得:

14.000  15.000  16.000
17.000  18.000  19.000
20.000  21.000  22.000

问题是,现在这些价值观已经转化为各种因素。

如果我再次将每列转换为数值as.numeric(),那么我再次获得整数,而不是小数。

我该如何解决这个问题?

我们可以使用lapply而不是apply,并将其分配回原始数据集

CI[] <- lapply(CI, format, nsmall = 2)

或者另一个选项是dplyr

library(dplyr)
CI_NEW <- CI %>%
mutate_all(format, nsmall = 2)

问题是apply返回character输出,默认情况下as.data.frame对非数字元素使用stringsAsFactors = TRUE。可以使用原始代码中的stringsAsFactors = FALSE进行校正

as.data.frame(apply(CI, 2, function(x) 
format(x, nsmall=3)), stringsAsFactors = FALSE)

最新更新