2016-05-15 91 views
0

我試圖動態地將一些數據幀傳遞給一個函數,該函數將返回每個數據幀的一些統計結果。目的是將統計結果並排繪製。我有問題,我的數據框分配給函數導致傳遞的數據框的名稱,而不是實際的數據框本身。R:將數據幀傳遞給函數動態

因此,例如,我的數據框被稱爲construct 1但強似表示此結構的實際數據框,代碼似乎將名字傳下去construct 1

任何人都可以看到如何解決這個

# Get a list of all the dataframes in the workspace 
my.dfs <- names(which(sapply(.GlobalEnv, is.data.frame))) 

# Filter to just the Alpha DataFrames 
my.dfs <- as.data.frame(my.dfs) %>% 
    filter(grepl('Alpha_', my.dfs)) %>% 
    mutate(my.table = as.character(my.dfs)) 

# Loop Through Each Table and get the Alpha Statistics 
for (i in 1:nrow(my.dfs)){ 

    construct = my.dfs$my.table[i] 
    construct_name = as.character(my.dfs$my.table[i]) 

    create_cronbach_summ(construct, construct_name) 

} 

最終結果將類似於

Construct Name 
Statistic 1 
Statistic 2 
Statistic 3.... 

我收到的錯誤消息是:

Error in UseMethod("select_") : 
    no applicable method for 'select_' applied to an object of class "character 

回答

1

看看deparse(susbtitute(x))來評估名稱並傳遞真實data.frame以進一步操作。強烈建議構建一個功能。 順便說一句,你應該考慮使用列表,每個級別有一個data.frame /一個結果,並且如果sapply(mylist,FUN=function(element){element$part}sapply(mylist,FUN=function(element){create_cronback_summ(element)}提取信息。

+0

Hi @Eric Lecoutre,如果我使用以下代碼:'construct = my.dfs $ my.table [1] construct = deparse(substitute(construct))'變量構造返回「構造」。如果我查看變量'my.dfs $ my.table [1]',我得到表格名稱在行情中尋找。有任何想法嗎? –

+0

嗨@Eric,你的解決方案讓我走上了正確的軌道,因爲我能夠谷歌周圍,發現[這](https://www.quora.com/Could-someone-give-an-explanation-of-how- eval-quote-and-substitute-work-in-R),這使我得到了這樣的代碼:'a < - my.dfs $ my.table [1] y = eval(parse(text = a))' –

相關問題