R 如何编写基于不同过滤器创建glm模型并将其附加到原始数据帧的代码

R 如何编写基于不同过滤器创建glm模型并将其附加到原始数据帧的代码,r,R,我想运行一个代码,根据目标变量上的过滤器创建不同的glm模型,这样每个过滤器都会得到不同的模型对象和结果。过滤器只针对一个变量,我有14个过滤器要运行。 以下是我的示例数据和玩具代码: dat1 <- read.table(text = " target wolfs snakes 3 1 7 3 0 4

我想运行一个代码,根据目标变量上的过滤器创建不同的glm模型,这样每个过滤器都会得到不同的模型对象和结果。过滤器只针对一个变量,我有14个过滤器要运行。 以下是我的示例数据和玩具代码:

dat1 <- read.table(text = " target wolfs     snakes
                    3        1         7
                    3        0         4
                    1        0         8
                    1        1         3
                    1        0         3
                    6        1         2
                    6        0         1
                    6        1         5
                    5        0         7
                    3        0         7
                    4        1         7
                    1        0         3
                    7        1         3
                    6        0         1
                    6        0         9
                    6        1         1   ",header = TRUE)
我对代码编写还不熟悉,所以我创建了这个玩具代码,但它不能直观地工作。任何帮助都会很好

for (i in c(1:14,21,30)) function (x) { ifelse{dat$target==[[i]],
                                               paste0("glm","[[i]]")<-glm(,data=dat, family=binomial(link='logit')
                                           paste0("dat$","[[i]]") <-ifelse(predict(glm[[i]],newdata=data[which(dat$target==[[i]],),])>0.5,1,0) 
}
函数(x){ifelse{dat$target==[[i]],
paste0(“glm”,“[[i]]”您的示例未运行,因此我无法验证它是否有效。您可以尝试此方法

for (i in c(0:14, 21, 30)) {
    my.mdl <- glm(wolfs ~ snakes, data = dat1, subset = dat1$target == i)
    dat1[dat1$target == i, paste("target", i, sep = "")] <- predict(my.mdl)
}
for(i在c(0:14,21,30))中){

my.mdl应该是17个新列:0..14,21,30.Hi Roman,我得到了这个错误:“glm.fit中的错误(x=numeric(0),y=integer(0),weights=NULL,start=NULL,:未找到对象‘fit’。另外:警告消息:1:在glm.fit中(x=numeric(0),y=integer(0),weights=NULL,start=NULL,:在迭代1中没有提供信息的观测值2:glm.fit:算法未收敛”如果您提供了一个可复制的示例,@mql4初学者,这将是最好的。当您尝试拟合与数据点数量相关的太多参数时,有时会出现收敛问题。是的@Roman Luštrik。感谢您指出,我知道收敛问题。我想您错过了dat1,编写了dat[…]在第三排的开头。谢谢你的帮助,它能工作。。
for (i in c(0:14, 21, 30)) {
    my.mdl <- glm(wolfs ~ snakes, data = dat1, subset = dat1$target == i)
    dat1[dat1$target == i, paste("target", i, sep = "")] <- predict(my.mdl)
}