2017-05-03 179 views
1

我正試圖在R中創建一個簡單的for循環,但我不確定如何在不創建全局變量的情況下去做這件事。如何聲明R中的for循環

我想輸出一個預測表整齊地,而不是通過我希望預測的許多不同的實例(如下圖)運行代碼。

house1 = newdata[1,] 
predict(fullmodel, house1) 
predict(sqftmodel, house1) 
predict(bestmodel, house1) 
house2 = newdata[2,] 
predict(fullmodel, house2) 
predict(sqftmodel, house2) 
predict(bestmodel, house2) 
house3 = newdata[3,] 

我想使用for循環來運行37個不同的房子,並在表中輸出。有任何想法嗎?

編輯:這是迄今爲止一個我的代碼部分

data = read.table("DewittData.txt") 
newdata = na.omit(data)#28 points to refer to 
colnames(newdata) = c("ListPrice", "Beds", "Bath","HouseSize","YearBuilt" 
     ,"LotSize", "Fuel","ForcedAir", "Other","FM","ESM","JD", 
     "SchoolDistrict","HouseType","GarageStalls","Taxes") 
attach(newdata) 
fullmodel = lm((ListPrice) ~ HouseSize + Beds + Bath + YearBuilt + LotSize 
       + Fuel + ForcedAir + Other + SchoolDistrict+ 
       HouseType + Other + FM + ESM + JD + GarageStalls + Taxes) 

bestmodel = lm(ListPrice~Beds) 
sqftmodel = lm(ListPrice~HouseSize, data = newdata) 

更新:

我明白了,所以我把它改成

predict(fullmodel, newdata[,]) 
predict(sqftmodel, newdata[,]) 
predict(bestmodel, newdata[,]) 

現在我將如何輸出這在表格格式?

+0

解決你的問題的一種方法是建立你的功能。或者可以使用「應用」功能。 – Alice

+0

您可以直接將整個數據框傳遞給'predict()',不需要逐行傳遞行 –

+0

@BeginnerJava使用'dput'來創建一個可重複使用的數據集示例。 – Masoud

回答

1

我不知道如果我得到您的問題,但這是我會做的預測基於不同的行df

Housefull <- predict(fullmodel, newdata[,]) 
Housebest <- predict(bestmodel, newdata[,]) 
Housesqft <- predict(sqftmodel, newdata[,]) 

一般來說,堅持矢量比使用循環好得多。

+0

據我瞭解你,你想要立即做所有的代碼。所以,我建立了我的功能給你,但由於我無法訪問你的數據,我得到一個錯誤。我會把你的代碼傳給你,只需要替換你的代碼,看看它是否工作。 – Alice