2014-07-17 130 views
1

我有一個將數據幀作爲參數的函數。在那個函數中,我需要使用if/else構造來根據用作參數的數據框來執行一些操作。例如,我需要能夠說獲取數據幀的名稱作爲R中的字符串

if (name of data frame=="Anthro_Data") {do this} else if (the name of data frame=="Sports") {do that}

我遇到的問題是我不知道如何獲取數據框的名稱(作爲字符串)才能使用它。有什麼建議麼!

+0

這似乎是一個很奇怪的方式來定義一個函數。由於誰在調用函數知道data.frame來自哪裏(理論上)不應該只是根據data.frame的內容調用不同的函數,而不是在函數中硬編碼特定的變量名稱? – MrFlick

+0

@ MrFlick,感謝您的評論。我的功能的任務是做一些聚合,並返回一個聚合的數據框。我的數據框有不同的維度/列名,所以我要麼使用你的方法,要麼使用我的方法。我不是一個有經驗的程序員,也不知道最佳實踐,但這對我來說似乎是一個解決方案。我認爲在我的五個數據框上調用一個函數而不是調用一個函數,而不是使用不同名稱調用5個函數,這些函數最終會執行相同的任務。 – BICube

+0

如果你想根據傳遞的內容做不同的事情,我會建議你做一些事情,比如查看列名(如果這對你很重要)。這比需要傳遞特定變量名更靈活。 – MrFlick

回答

3

您可以使用deparsesubstitute得到傳遞給函數的參數的名稱:

a <- 1 
f <- function(arg) deparse(substitute(arg)) 
f(a) 
# [1] "a" 
+0

...我只是想補充一點,我可能會更喜歡使用數據框上的屬性來完成此操作,而不是解析名稱。 – joran

+0

@josilber非常感謝你 – BICube

+0

感謝@joran的其他建議 – BICube

相關問題