我正在尝试将一列整数转换为十进制:
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)