2017-07-23 62 views
0
fun <- function(dataframe, var){ 
    print(data$var) 
} 

dataset <- data.frame(a = 1:6, b = 12:17, c = 3:8) 

fun(dataset, a) 

本質上,我想要做這樣的事情,我只需將其中一個列名傳入一個函數,並且可以稍後使用它來調用該列。使用DataFrame列名作爲R函數參數

我知道group_by函數以某種方式處理它,但是當我進入調試模式並試圖找出它時,我無法制定出實際上正在做我想做什麼的頭或尾。

+3

通行證在引用字符串' 「一個」'和功能使用括號:'數據[[變種]]' – Parfait

+1

樂趣< - 功能(數據幀,VAR){打印(dataframe [c(var)])} –

+0

這裏還有一個問題:函數參數被命名爲'dataframe',但是在body中引用了'data'。 – Uwe

回答

-1

要做到這一點dplyr -like,你需要使用tidyevaluation。首先,你需要enquo()var,然後參照var!!

library(dplyr) 

fun <- function(dataframe, var){ 
    var <- enquo(var) 
    select(dataframe, !!var) 
} 

dataset <- data.frame(a = 1:6, b = 12:17, c = 3:8) 

fun(dataset, a) 

你可以找到一個很好的tidyeval政黨成員here

最佳,

科林