2013-07-12 40 views
1

我用的reshape庫工作,並切換到reshape2,因爲它應該是更快的。重鑄功能輸出列表

但我得到很奇怪的結果作爲recast函數的輸出:

  • 使用reshape::recast,我獲得正確的數據幀我想 的方式。
  • 使用reshape2::recast,我得到一個標籤data(其中 是我想看到的結果數據幀)和labels這個列表,它本身就是一個包含我的x軸和y軸標籤的列表。

我知道有可能以我想要的方式重建我的數據框,但不能直接完成嗎?

回答

1

你可以通過簡單地增加一個單純drecast代碼中定義自己的函數:

redcast <- function (data, formula, ..., id.var, measure.var) { 
    if (any(c("id.vars", "measure.vars") %in% names(match.call()))) { 
    stop("Use var, not vars\n") 
    } 
    molten <- melt(data, id.var, measure.var) 
    dcast(molten, formula, ...) 
} 

redcast(french_fries, time ~ variable, id.var = 1:4) 

# Aggregation function missing: defaulting to length 
# time potato buttery grassy rancid painty 
# 1  1  72  72  72  72  72 
# 2  2  72  72  72  72  72 
# 3  3  72  72  72  72  72 
# 4  4  72  72  72  72  72 
# 5  5  72  72  72  72  72 
# 6  6  72  72  72  72  72 
# 7  7  72  72  72  72  72 
# 8  8  72  72  72  72  72 
# 9  9  60  60  60  60  60 
# 10 10  60  60  60  60  60 
+0

我同意你的解決方案在這裏(+1),但你認爲這也許是對什麼是監督可能是利用率低下的功能?我能想到的唯一想法是,這是設計用於'dcast'和'acast',因此轉換爲列表,但不知道爲什麼沒有「重新組裝」輸出的函數。 – A5C1D2H2I1M1N2O1R2T1

+0

我不知道。我不認爲需要這個功能。它只保存一行代碼,並且「施加[額外的]認知負擔」(引用哈德利)。 – Roland

+0

這就是我的意思。它似乎沒有廣告,我不能完全弄清楚爲什麼它存在開始...... – A5C1D2H2I1M1N2O1R2T1