2016-10-18 76 views
2

例如,我試圖編寫這個函數,將概率錶轉換爲R中的data.frame。我希望參數「na」成爲第一個這個數據幀。在R中編寫函數時傳遞字符串/字符參數

prop_table_to_df <- function(table, nm){ 
    data.frame(nm = factor(names(table)), Percentage = table) 
    } 

想我調用一個函數(sk_table, 「年齡段」) 預期OUT輸出是這

 age_group Percentage 
(15,20] (15,20] 0.4518717 
(20,25] (20,25] 0.3118461 
(25,30] (25,30] 0.2136201 
(30,35] (30,35] 0.1863965 

但不是輸出是

   nm Percentage 
(15,20] (15,20] 0.4518717 
(20,25] (20,25] 0.3118461 
(25,30] (25,30] 0.2136201 
(30,35] (30,35] 0.1863965 

我該如何解決這個問題?顯然,在這種情況下,R在接收函數時不接受字符串或字符作爲參數。感謝您的幫助。

+1

你可以嘗試'setnames':例如'setnames(data.frame(factor(names(table)),table),c(「age_group」,「Percentage」))',其中'age_group'是你傳入函數的字符串。 – SymbolixAU

+0

@SymbolixAU'setnames'是data.table。基地是'setNames'; 'set_names'是matrittr/purrr。 – alistaire

+0

@alistaire - 是的,你是對的 - 我每天都會使用'data.table',對我來說它算作基地:〜) – SymbolixAU

回答

0

在創建data.frame後,您必須添加另一行才能進行重命名。我已經完成了下面的工作,將新的df的第一列重命名爲函數input nm。

prop_table_to_df <- function(table, nm){ 
    df = data.frame(nm = factor(names(table)), Percentage = table) 
    colnames(df)[1] = nm #rename first column to value of nm 
    return(df) 
} 
+0

這正是我所做的!謝謝!我只是想知道是否有一個更直接的方式來寫它沒有data.table方式。 – Viveme679