R 更改公式中变量的名称

R 更改公式中变量的名称,r,R,我试图创建通用函数来处理具有多个合理值的数据帧。我想要的是将公式传递给函数以执行回归,例如: f这里演示一种方法。更复杂的实现可能会更新拟合的线性模型(请参见更新),但这超出了问题的直接范围 ## Make a reproducible example!! df <- setNames(as.data.frame(matrix(rnorm(96), ncol=8)), c("MRPCM1","MRPCM2","MRPCM3","DSEX","IEP", "ELL3",

我试图创建通用函数来处理具有多个合理值的数据帧。我想要的是将公式传递给函数以执行回归,例如:


f这里演示一种方法。更复杂的实现可能会更新拟合的线性模型(请参见更新),但这超出了问题的直接范围

## Make a reproducible example!!
df <- 
setNames(as.data.frame(matrix(rnorm(96), ncol=8)), 
         c("MRPCM1","MRPCM2","MRPCM3","DSEX","IEP", "ELL3","SDRACEM","PARED"))

## Construct a template formula
f <- MRPCM ~ DSEX + IEP + ELL3 + SDRACEM + PARED

## Workhorse function
iterlm <- function(formula, data) {
    ## Find columns in data matching pattern on left hand side of formula
    LHSpat <- deparse(formula[[2]])
    LHSvars <- grep(LHSpat, names(data), value = TRUE)
    ## Run through matchded columns, repeatedly updating the formula,
    ## fitting linear model, and extracting whatever results you want. 
    sapply(LHSvars, FUN=function(var) {
        uf <- update.formula(f, as.formula(paste(var, "~ .")))
        coef(lm(uf, df))
    })
}

## Try it
iterlm(f, df)
##                  MRPCM1     MRPCM2      MRPCM3
## (Intercept)  0.71638942 -0.3883355  0.22202700
## DSEX        -0.07048994 -0.7478064  0.62590580
## IEP         -0.22716821 -0.2381982  0.12205780
## ELL3        -0.44492392  0.1720344  0.41251561
## SDRACEM      0.21629235  0.4800773  0.02866802
## PARED        0.07885683 -0.2582598 -0.07996121
##做一个可复制的例子!!

df看似合理的变量名称从何而来?另外,请参见
?as.formula
下的示例,以将字符串粘贴在一起并将其转换为公式。从理论上讲,这应该是你想要的-提出你的问题,我们会确定的。谢谢Josh,这几乎是正确的。如果有多个变量要替换,则此操作无效。请参阅对上面原始问题的编辑。@jbryer--好吧,现在这已成为一个不同的问题,我将以不同的方式处理这个问题。我不打算做这件事,但这里有一些进一步的提示供您参考。(1) 将
browser()
调用放入
iterlm()
的第一行。然后尝试使用LHS上有多个变量的公式执行
iterlm()。(2) 尝试
f[[2]][[2]]
f[[2]][[2]]1{}
构造以了解如何编写一个函数来处理
LHS
上包含一个或多个变量的公式。