圆形功能不再适用于鼠标输出
Round function no longer works with mice output
自从将 R 更新到 4.0.0 并重新安装 mice
后,round()
函数似乎不再适用于鼠标输出,但会产生一条错误消息。
例如(使用鸢尾花数据集):
library(missForest) # for the prodNA function
library(mice) # for the imputations
#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)
#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm",
maxit = 50, seed = 500)
model <- with(data = imputed_data, lm(Sepal.Length ~ Sepal.Width))
round(summary(pool(model), conf.int = TRUE, exponentiate = TRUE), 2)
这会产生错误消息:
Error in Math.data.frame(list(term = 1:2, estimate = c(760.13466726231, :
non-numeric variable(s) in data frame: term
使用 summary(pool(model), conf.int = T, exponentiate = T)
效果很好。
在更新 R 和鼠标之前,我从未遇到过 R 中的圆形函数问题。
我不知道为什么会发生变化,但是 NEWS file for mice 在版本 3.8
中说
There is now a more flexible pool()
function that integrates better with the broom
and broom.mixed
packages.
将行名称更改为 term
列是有道理的,因为这与 tidyverse 机制(如 broom
和 broom.mixed
)更兼容。
您可以要求 R 舍入除第一列以外的所有列:
ss <- summary(pool(model), conf.int = TRUE, exponentiate = TRUE)
ss[-1] <- round(ss[-1],2)
ss
## term estimate std.error statistic df p.value 2.5 % 97.5 %
## 1 (Intercept) 670.98 0.48 13.69 143.68 0.00 262.19 1717.15
## 2 Sepal.Width 0.80 0.15 -1.44 143.36 0.15 0.59 1.09
如果你喜欢 tidyverse,你可以
mutate_if(ss,is.numeric, round, 2)
自从将 R 更新到 4.0.0 并重新安装 mice
后,round()
函数似乎不再适用于鼠标输出,但会产生一条错误消息。
例如(使用鸢尾花数据集):
library(missForest) # for the prodNA function
library(mice) # for the imputations
#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)
#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm",
maxit = 50, seed = 500)
model <- with(data = imputed_data, lm(Sepal.Length ~ Sepal.Width))
round(summary(pool(model), conf.int = TRUE, exponentiate = TRUE), 2)
这会产生错误消息:
Error in Math.data.frame(list(term = 1:2, estimate = c(760.13466726231, : non-numeric variable(s) in data frame: term
使用 summary(pool(model), conf.int = T, exponentiate = T)
效果很好。
在更新 R 和鼠标之前,我从未遇到过 R 中的圆形函数问题。
我不知道为什么会发生变化,但是 NEWS file for mice 在版本 3.8
中说There is now a more flexible
pool()
function that integrates better with thebroom
andbroom.mixed
packages.
将行名称更改为 term
列是有道理的,因为这与 tidyverse 机制(如 broom
和 broom.mixed
)更兼容。
您可以要求 R 舍入除第一列以外的所有列:
ss <- summary(pool(model), conf.int = TRUE, exponentiate = TRUE)
ss[-1] <- round(ss[-1],2)
ss
## term estimate std.error statistic df p.value 2.5 % 97.5 %
## 1 (Intercept) 670.98 0.48 13.69 143.68 0.00 262.19 1717.15
## 2 Sepal.Width 0.80 0.15 -1.44 143.36 0.15 0.59 1.09
如果你喜欢 tidyverse,你可以
mutate_if(ss,is.numeric, round, 2)