我正在尝试使用kmlcov包中的kmlCov()来检查某些数据的集群。在获得结果后,我不太确定如何从S4对象中提取信息。我认为复杂性是由于存储信息的S4对象实际上是在另一个S4对象中,我不知道如何得到它。
str(objectname)的部分输出如下:
Formal class 'KmlCovList' [package "kmlcov"] with 1 slots
..@ list_part:List of 2
.. ..$ :Formal class 'GlmCluster' [package "kmlcov"] with 16 slots
.. .. .. ..@ formula :Class 'formula' length 3 Total ~ Prop
.. .. .. .. .. ..- attr(*, ".Environment")=<environment: 0x11aed66e8>
.. .. .. ..@ nClust : num 2
.. .. .. ..@ ident : chr "CaseID"
.. .. .. ..@ timeVar : chr "time"
.. .. .. ..@ time : int [1:8287] 0 1 2 3 4 5 6 7 0 1 ...
.. .. .. ..@ effectVar : chr ""
.. .. .. ..@ effect : NULL
.. .. .. ..@ model.glm :List of 30
.. .. .. .. ..$ coefficients : Named num [1:4] 0.988 2.028 0.948 6.317
.. .. .. .. .. ..- attr(*, "names")= chr [1:4] "Ga" "Gb" "Ga:Prop" "Gb:Prop"
.. .. .. .. ..$ residuals : Named num [1:8287] 4.064 0.634 -1.215 -1.936 -1.936 ...
.. .. .. .. .. ..- attr(*, "names")= chr [1:8287] "1" "2" "3" "4" ...
.. .. .. .. ..$ fitted.values : Named num [1:8287] 1.94 1.37 1.22 1.94 1.94 ...
.. .. .. .. .. ..- attr(*, "names")= chr [1:8287] "1" "2" "3" "4" ...
例如,如果我输入
objectname@list_part
我得到了存储在对象中的所有内容。我尝试了格式,如
objectname@list_part@formula
objectname@list_part$formula
并未能得到我需要的东西。我想得到的是存储在插槽中的具体信息。
任何建议将不胜感激。谢谢!
答案 0 :(得分:1)
使用?kmlCov
library(kmlcov)
data(artifdata)
res <- kmlCov(formula = Y ~ clust(time + time2),
data = artifdata, ident = 'id',timeVar = 'time', effectVar = 'treatment',
nClust = 2:3, nRedraw = 2)
lapply(res@list_part, function(x)
lapply(x,function(y) y@formula))
#[[1]]
#[[1]][[1]]
#Y ~ time + time2
#<environment: 0x17a01718>
#[[1]][[2]]
#Y ~ time + time2
#<environment: 0x17928f80>
#[[2]]
#[[2]][[1]]
#Y ~ time + time2
#<environment: 0x26eed80>
#[[2]][[2]]
#Y ~ time + time2
#<environment: 0x1752dc70>
sapply(res@list_part, function(x) sapply(x,function(y) y@nClust))
# [,1] [,2]
#[1,] 2 3
#[2,] 2 3
lapply(res@list_part, function(x)
sapply(x,function(y) coef(y@model.glm)))
答案 1 :(得分:1)
在@akrun回答后,您还可以尝试:
str(res)
str(res@list_part[[1]][[1]]@model.glm)
str(res@list_part[[1]][[1]]@model.glm$formula)
res@list_part[[1]][[1]]@model.glm$formula
str(res@list_part[[1]][[2]]@ident)
str(res@list_part[[1]][[2]]@model.glm)
res@list_part[[1]][[2]]@model.glm
答案 2 :(得分:0)
简而言之,您可以使用@而不是$从S4对象中提取信息。