2014-01-05 2 views
3

Отправил кучу регрессий, и теперь я пытаюсь собрать их значения p и поместить их в вектор.Сбор значений P с использованием Loop в R

x=summary(reg2)$coefficients[4,4] #p value from the first regression, p-val is in row 4, col 4 

for (i in 3:1000){ 

    currentreg=summary(paste("reg",i,sep="")) 
    assign(x,c(x,currentreg$coefficients[4,4])) 

} 

Я также попытался eval(parse(currentreg)) и eval(parse(summary(paste("reg",i,sep="")))) не повезло. У меня всегда есть эта проблема с сообщением R «Эй, не рассматривайте это как строку, рассматривайте ее как переменную» и наоборот.

+3

Это было бы намного проще, если бы вы просто сохранили модели в списке. – Dason

ответ

7

Хотя было бы лучше хранить объекты в списке и петли над тем, что вы просите get:

currentreg <- summary(get(paste("reg", i, sep=""))) 

Если у вас есть список объектов, models <- list(reg2, reg3, reg4, ...). Вы можете затем цикл по этому списку с sapply для достижения желаемого результата (зацикливание, собирая результаты в вектор):

x <- sapply(models, function(z) { summary(z)$coeficients[4,4] }) 
+0

Мэтт, как всегда спасибо! :) – jessica

5

Вы можете использовать

sapply(mget(ls(pattern = "^reg\\d+$")), function(x) summary(x)$coefficients[4,4]) 

создать вектор со всеми р- значения.

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