我有一個名為data的資料表:
[![這是資料表的截圖][1]][1]
目標是撰寫一個模仿以下代碼的函式:
data[Region == "Northeast",mean(Awareness, na.rm = TRUE), by = Product][order(-rank(V1))][1:5,.(Product)]
到目前為止,我有:
topx_engagement = function(state_of_engagement, respondent_variable, respondent_variable_sub, rank_length = 3){
respondent_variable_sub = as.character(respondent_variable_sub)
data[eval(respondent_variable == respondent_variable_sub), mean(get(state_of_engagement), na.rm = TRUE), by = Product][order(-rank(V1))][1:rank_length,.(Product)]
}
功能topx_engagement應該允許用戶輸入respondent_variable與重合區域,一個respondent_variable_sub這恰逢“振興東北”和隨后的引數。我想專注于前面的論點,因為所有其他作業都很好。
目前,當我打電話時:
topx_engagement(state_of_engagement = Awareness, respondent_variable = Region, respondent_variable_sub = Northeast, rank_length = 3)
我收到一個錯誤:
topx_engagement 錯誤(state_of_engagement = Awareness,respondent_variable = Region,:未找到物件“東北”
或者,運行
topx_engagement = function(state_of_engagement, respondent_variable, respondent_variable_sub, rank_length = 3){
#respondent_variable_sub = as.character(respondent_variable_sub)
data[eval(respondent_variable == respondent_variable_sub), mean(get(state_of_engagement), na.rm = TRUE), by = Product][order(-rank(V1))][1:rank_length,.(Product)]
}
topx_engagement(state_of_engagement = Awareness, respondent_variable = Region, respondent_variable_sub = Northeast, rank_length = 3)
在 eval(.massagei(isub[[2L]]), parent.frame(), parent.frame()) 中拋出錯誤:找不到物件“區域”
我需要幫助以正確的格式獲取函式輸入。[1]:https : //i.stack.imgur.com/hseWS.png
uj5u.com熱心網友回復:
如果我們傳遞不帶引號的引數,我們可以使用deparse/substitute轉換為character字串
topx_engagement = function(state_of_engagement,
respondent_variable, respondent_variable_sub, rank_length = 3){
state_of_engagement <- deparse(substitute(state_of_engagement))
respondent_variable <- deparse(substitute(respondent_variable))
respondent_variable_sub <- deparse(substitute(respondent_variable_sub))
data[eval(as.name(respondent_variable)) == respondent_variable_sub,
mean(get(state_of_engagement), na.rm = TRUE),
by = Product][order(-rank(V1))][1:rank_length,.(Product)]
}
然后稱之為
topx_engagement(state_of_engagement = Awareness,
respondent_variable = Region,
respondent_variable_sub = Northeast, rank_length = 3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340002.html
上一篇:分組矩陣相關
