2016-09-13 76 views
0

我有一個向量兩個位置:如何填寫R中空白數據框的列表?

ListOfLocations <- c("L1", "L2")

我有三個事件在載體上述兩個地點發生的事情:

ListOfEvents <- c("E1", "E2", "E3")

(在我的實際數據集,我有66個地點和300個事件。)

我已經建立了一個模型來預測事件發生在每個這些位置與tra的概率使用實際數據進行測試。現在,我的任務是預測未來56天內每個事件在每個事件發生的概率。爲了做到這一點,我相信我將需要每個Location * Event組合的空數據集。以上操作的代碼如下:

dfNames <- apply(expand.grid(ListOfLocations, ListOfEvents), 1, function(x) paste0(x[1], x[2]))

dfNames

[1] "Location1Event1" "Location1Event2" "Location1Event3" 
[4] "Location2Event1" "Location2Event2" "Location2Event3" 

newData <- setNames(replicate(length(dfNames), 
data.frame(Location = character(56), 
      Event = character(56), 
      Probs = double(56), 
      Date = character(56), 
      DayWeek = integer(56), stringsAsFactors = FALSE), simplify = FALSE), dfNames) 

我之所以有數據幀的名單是因爲我想用map功能在purrr包。我想填寫LocationEvent變量中的位置和事件的名稱。任何幫助表示讚賞。謝謝!

+0

難道你目前所採用的替代是使用'根據你的變量加上expand.grid'創建一個大的數據集空的變量是56個元素,然後使用'split'根據這兩個因子創建一個列表?這樣''Location'和'Event '已經被填入並且'split'基於這兩個因素手動命名列表中的每個元素。 – aosmith

回答

0

你真的應該使用列表中這類事情,而不是data.frame(簡單地替換list()data.frame()。您的單曲「E1」,「L1」值將在data.frame重複56次。

Map(f = function(x) data.frame(Location = x[1], 
          Event = x[2], 
          Probs = double(56), 
          Date = character(56), 
          DayWeek = integer(56), stringsAsFactors = FALSE), 
    x = data.frame(t(expand.grid(ListOfLocations, ListOfEvents)))) 

地圖的基礎R工程,以及速記地圖功能purrr衆人。

+0

謝謝@Vlo! '(我在seq_along(dfNames)){ newData [[i]] $位置< - substr(dfNames [[i]],1,6) }' 這也奏效! –