在glm的for循环中使用paste()

时间:2015-04-10 04:57:20

标签: r loops for-loop paste glm

在下面的代码中,df.pts是一个数据帧。我想使用不同的y变量运行大约十几个glm模型(代码中只显示了两个)。我正在使用带有paste()函数的for循环,但我似乎无法使paste()函数正常工作。 paste()我缺少什么?

SPCA2 = df.pts[,3]
CLQU2 = df.pts[,4]

df.list = list(SPCA2, CLQU2)

for (i in df.list) {
    qp.mod = glm(paste(i,"~NDVI+ELEV"), family="quasipoisson", data=my.data)
    print(summary(gp.mod))
 }

2 个答案:

答案 0 :(得分:2)

非常感谢!主要问题是df.list是一个向量列表,应该是一个名称列表。

换句话说,纠正问题...

df.list = ("SPCA2", "CLQU2")

而不是

df.list = list(SPCA2, CLQU2)

但是,也正确地指出数据帧my.data不是正确的数据帧。最后,虽然它没有它,但函数as.formula()也有效。再次,非常感谢!

答案 1 :(得分:0)

您需要在as.formula之前添加paste,让R知道您要将其视为公式而不是字符。

qp.mod = glm(as.formula(paste(i,"~NDVI+ELEV")), family="quasipoisson", data=my.data)