1

我有时将我在模型中使用的变量向量化并用它做其他事情(例如描述等......)。问题是有时我使用“as.numeric(var)”或“as.factor(var)”,或中心“I(var-15)”。然后我需要原始变量的名称。

问题是我不能简单地 gsub(lmfit$model,"as.factor(","") 因为我得到一个错误,我想避免删除包含 I 等的变量......所以我需要删除I(* -any number) 和 as.factor(*),其中 * 是我希望保持不变的变量名。

假设我有一个模型的系数向量:

outcome <- c(1:9)
INDEX <- c(18,17,15,20,10,20,25,13,12)
BODYFAT <- c(18,18,15,20,20,20,15,20,15)
lmfit <- glm(outcome ~ as.factor(BODYFAT) + I(INDEX-15), family = gaussian())
names(lmfit$model)

您将如何处理名称(lmfit$model)以获取原始变量名称(即 BODYFAT 和 INDEX?

我已经开始创建一些笨拙的代码来删除所有居中的数字(假设在大多数情况下 1 到 500 就足够了)

b<-paste(paste0("- ",1:500,"|",collapse=""),"-501",collapse="")
    library(stringr)
    str_replace_all(names(lmfit$model),b, " ")

但是我在删除 I() 和 as.factor() 时遇到了真正的问题。有什么建议么?

提前谢谢了

4

0 回答 0