2014-09-06 54 views
-2

我有一個matchIds矢量和一個函數,該函數返回在該匹配中玩過的玩家作爲矢量(比如getPlayersFromMatchId是函數)。現在我的問題是,迭代matchIds最常用的方式是什麼,提取玩家信息並建立一個數據框,其中每行對應於那場比賽中的玩家?這裏有一個簡單的循環,它的伎倆動態構建一個數據框

for (match in matchIds){ 
    players = getPlayersFromMatchId(match) 
    Add players to a dataframe 
} 

我可以遍歷matchIds但如何建立與函數返回值的每個數據幀?

+1

你應該避免將行添加到data.frame一個接一個。這通常是一個可怕的想法。有沒有原因'getPlayersFromMatchId'沒有矢量化(矢量輸入,矢量輸出)?你可以把它包裝在Vectorize中,或者做一個簡單的'sapply()'來獲得你需要的所有值。如果你真的在樣本輸入中包含一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a- great-r-reproducible-example),你的問題會更容易回答,以及實際可運行的期望輸出和代碼。 – MrFlick 2014-09-06 03:22:10

+0

它根據matchId從網站提取數據。我必須結合所有比賽的球員信息。 – Goutham 2014-09-06 03:24:20

+1

那麼你的描述太模糊,無法精確回答。但總體思路是將要存儲爲列的數據的向量填充,然後在完成時將其組合在數據框中。 – MrFlick 2014-09-06 03:26:59

回答

0

如果你必須做你的方式,以下可能會有所幫助:

dd = data.frame(players = list()) 
for (match in matchIds){ 
    dd$players[nrow(dd)+1] = getPlayersFromMatchId(match) 
    Add players to a dataframe 
} 
dd$players