2

假设我想将一组 X 拟合到 Y。例如:

fit <- glm(Y~x1+x2+x3,data=mydata,family=binomial())

我不想使用变量名 X1、X2、X3,而是使用 mydata 中位置/列 20 到 50 中的 31 个特征来拟合 Y。我以前见过这样做,但找不到示例。谁能提供一个例子...谢谢。

4

3 回答 3

4

由于不同的原因,我对当前的任何一个答案都不感到兴奋。

lm( Y ~ . , data= mydata[ , c( grep("^Y$", names(mydata) ), 20:50) ] )

(数字列索引使用 grep 来查找 Y 的正确位置。这意味着不会因为 Y 与“mydata”分开而引起任何混淆。)

于 2013-06-12T21:34:52.387 回答
2
y <- 1:100
mydata <- as.data.frame(matrix(rnorm(10000),nrow=100))
lm(y~.,data=mydata) # all the variables
lm(y~.,data=mydata[,20:30]) # just some of them
于 2013-06-12T21:23:03.457 回答
1

这可能不是最优雅的方法,但这是我使用 lm() 的方法。当然,您只需更改公式字符串以匹配您对 glm() 的使用。

myData <- data.frame(Y=rnorm(100),x1=rnorm(100),x2=rnorm(100))
theNames <- names(myData)[2:3]
theFormula <- paste0("lm(Y ~ ",paste(theNames,collapse=" + "),", data=myData)")
theModel <- eval(parse(text=theFormula))
于 2013-06-12T21:21:32.073 回答