2015-04-10 2 views
0

В приведенном ниже коде df.pts - это dataframe. Я бы хотел запустить около дюжины моделей glm с использованием другой переменной y (только две цифры показаны в коде). Я использую цикл for с функцией paste(), но я не могу заставить функцию paste() работать правильно. Что мне не хватает с помощью paste()?с использованием paste() в цикле for с glm

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)) 
} 
+0

Вы попробовали 'qp.mod = glm (as.formula (paste (i," ~ NDVI + ELEV ")), family =" quasipoisson ", data = my.data)'? – Hao

+0

проблема может быть с 'data = my.data'; R будет пытаться найти переменные, провозглашенные в формуле, в эту кажущуюся неочевидной (?) 'My.data'. Если 'NDVI' и' ELEV' действительно находятся в фрейме данных с именем 'my.data', тогда проблема находится в другом месте. Но если они просто векторы, не принадлежащие какому-либо файловому кадру, просто опустите аргумент 'data = my.data'. –

+0

Проблема заключается в том, что вы передаете вектор значений (т.е. 'df.pts [, 3]') в 'формулу'. Здесь вы хотите передать имя переменной. Поэтому 'df.list' должен быть списком имен переменных, а не фактическими данными. Обратите внимание, что у вас есть опечатка в сводном заявлении. – user20650

ответ

0

Вам нужно добавить as.formula перед тем paste, чтобы R знаю, что вы хотите, чтобы рассматривать его в качестве формулы вместо символов.

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

Большое спасибо! Основная проблема заключалась в том, что df.list был списком векторов и должен был быть списком имен.

я другие слова, чтобы исправить эту проблему ...

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

вместо

df.list = list(SPCA2, CLQU2) 

Однако, это было также правильно указал, что dataframe, my.data, не было правильный фрейм. Наконец, пока он работал без него, работала функция as.formula(). Еще раз большое спасибо!

Смежные вопросы