使用r从对象列表中拉出对象

时间:2018-01-26 13:33:18

标签: r model data-manipulation

我正试图在tibbledataframe中提取psi术语及其相应的变量。当我尝试glm.fitted.segmented$....时,我看不到psi作为选项。当我在RStudio的全局环境中单击模型对象时,我确实在xlevels: Named list()下看到了psi。

理想情况下,我希望采用以下格式的dataframe

 Variable         PSI
 Age              50
 Age              53
 off.set.term     4.369448

任何人都可以帮我弄清楚如何拉出这个物体吗?谢谢。

library(segmented)
library(tidyverse)

set.seed(1)
#create target variable
Y<-c(13,21,12,11,16,9,7,5,8,8) 
#create independent variables
X<-c(74,81,80,79,89,96,69,88,53,72)
age<-c(50.45194,54.89382,46.52569,44.84934,53.25541,60.16029,50.33870,
   51.44643,38.20279,59.76469)
#put together in data frame and develop initial model
dat=data.frame(Y=Y,off.set.term=log(X),age=age)
glm.fit=glm(Y~age+off.set.term,data=dat,family=poisson)

#fit segmented model
glm.fitted.segmented <- segmented(glm.fit, seg.Z=~age + off.set.term, psi = 
list(age = c(50,53), off.set.term = c(4.369448)))
summary(glm.fitted.segmented)

1 个答案:

答案 0 :(得分:1)

psiglm.fitted.segmented的元素;您可以通过撰写str(glm.fitted.segmented)来查看其中的所有内容。

请参阅:

> glm.fitted.segmented$psi
                    Initial      Est.    St.Err
psi1.age          50.000000 51.847375 3.7901326
psi2.age          53.000000 57.873361 4.5794829
psi1.off.set.term  4.369448  4.313503 0.7814676

要创建一个包含rownames的表(在本例中为=变量名),请使用:

glm.fitted.segmented$psi %>% as.data.frame() %>% rownames_to_column()
            rowname   Initial      Est.    St.Err
1          psi1.age 50.000000 51.847375 3.7901326
2          psi2.age 53.000000 57.873361 4.5794829
3 psi1.off.set.term  4.369448  4.313503 0.7814676