2012-12-14 37 views
1

我需要對通過ID標識的車輛進行一些分析。此分析的結果將包括一些numericfactorlogical信息。在分析中使用的所有數據都在一個數據幀,這樣的功能是這樣的:使用功能增長數據幀的有效方法

Results <- by(Data, Data$ID, Function) 

Function的目的是讓輸出是這樣的:

Function <- function(DF) { 
          ## Do stuff... 
          return(c(23.2, as.factor("SuperFast"), TRUE)) 
         } 

什麼是偉大這個方法到目前爲止,除了是相當快的(佔約1分鐘內,其中一個for循環要花好幾個小時),可以很容易地放在data.frame格式是:

as.data.frame(do.call("rbind", Results)) 

當然,cFunction"rbind"do.call脅迫一切到相同的對象類型。要解決這個問題,我已經作出Function吐出一個特徵向量(如as.character(23.2, "SuperFast", TRUE),然後在結束手動更改對象類型。

有(1)返回的東西,可以在數據幀是row方式?有不同的對象類型或(2)一個更好的方法比使用byc(對於行)

只是踢,這裏的東西,可用於數據:

Data <- data.frame(ID=c(1,2,2,3)) 

回答

4

只返回一個數據框架而不是你的函數中的矢量:

Function <- function(DF) { 
    ## Do stuff... 
    return(data.frame(a = 23.2,b = as.factor("SuperFast"),c = TRUE)) 
} 

順便說一下,唯一強制所有數據類型爲c。假設你傳遞給它的所有數據框都是一致的,那麼這個數據框方法將(主要)保留類型。

+0

謝謝 - 感覺很愚蠢,錯過了,但我很高興這很簡單。我認爲我之前試圖避免使用這種方法,因爲我用'colnames'命名了不同的東西,但是因爲這些都來自同一個函數,所以它應該完美地工作。 –