我在Rstudio中使用Rmarkdown和Kniter制作MS Word文档。但是,我的结果来自MSM包。这是我在.rmd sript中的代码:
knitr::kable(pmatrix.msm(xdata.msm),caption = "Transition probability matrix.")
我收到此错误:
Error in as.data.frame.default(x) :
cannot coerce class ""msm.est"" to a data.frame
Calls: <Anonymous> ... format_args -> as.data.frame -> as.data.frame.default
如何在Word中很好地打印MSM模型结果。请帮我解决。此
更新
转换为数据框提供:Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""msm.est"" to a data.frame.
我需要为pmatrix.msm(xdata.msm)
添加标题。
这是我的msm对象:
dput(xdata.msm)
structure(c(0.867104394602623, 0.0297597288741373, 0.0111688422294673,
0.0436200880979502, 0.937379027520689, 0.0642139547902726, 0.0892755172994266,
0.0328612436051735, 0.92461720298026), .Dim = c(3L, 3L), .Dimnames = list(
c("State 1", "State 2", "State 3"), c("State 1", "State 2",
"State 3")), class = "msm.est")
更新: as.data.frame.matrix()
适用于某些人但不适用于所有人。请看这个对象:
dput(pnext.msm(xdata.msm))
structure(list(estimates = structure(c(0, 0.493157008697057,
0.141450173196988, 0.312417736561033, 0, 0.858549826803012, 0.687582263438967,
0.506842991302943, 0), .Dim = c(3L, 3L), .Dimnames = list(c("State 1",
"State 2", "State 3"), c("State 1", "State 2", "State 3"))),
L = structure(c(0, 0.404769718769504, 0.0851255671695353,
0.229501053449466, 0, 0.775032294188692, 0.599692174664181,
0.416275351504334, 0), .Dim = c(3L, 3L)), U = structure(c(0,
0.583724648495666, 0.224967705811308, 0.400307825335819,
0, 0.914874432830465, 0.770498946550534, 0.595230281230496,
0), .Dim = c(3L, 3L))), .Names = c("estimates", "L", "U"), class = "msm.est")
Warning in seq_len(ncols) : first element used of 'length.out' argument
Error in seq_len(ncols) :
argument must be coercible to non-negative integer
答案 0 :(得分:1)
使用as.data.frame.matrix(xdata.msm)
代替as.data.frame(xdata.msm)
。也就是说,明确地为matrix
调用as.data.frame
方法。这是因为R不能说这个类的对象也是一个矩阵,并且包作者忽略了提供数据框强制方法。
答案 1 :(得分:0)
我认为您的错误消息非常清楚。 kable
可以很好地处理矩阵或数据框。您的对象是其他东西并将其转换为数据框不起作用。您必须将msm结果转换为数据框,然后才能使用kable
。否则,只需打印出pmatrix.msm(xdata.msm)
的结果。